Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 21 Next »

This page covers the steps to view new PDUSessionEstSR KPI within a given time range (a KPI that is computed by KPI MS) via UUI

Manual Configuration:

 1. UUI:

Update the images of the UUI components -

  • image: onap/usecase-ui-server: 5.1.0-STAGING-latest
  • image: onap/usecase-ui: 5.1.0

2. MSB Configuration

Register so-orchestrationTasks and so-serviceInstances interface to MSB.

Interface registration can be done through portal.

Steps(Portal):

Link: https://{{master server ip}}:30284/iui/microservices/default.html

 1.Select ‘’ in the left pane

 2. Click 'Service Register' button.

 3. Input the basic info as the picture shows(also refer to the registration info provided above)

4. Click Add Host button.

    Input IP Address and Port then click the 'SAVE' button. (Use cmd ’kubectl get svc n onap | grep dl-des‘ to confirm IP and port.)

3. AAI Configuration:

Please find below curl commands with required data to be populated in AAI, provide the worker vm ip for nfsServer. however, you do not need to create these service profiles manually because SO creates them for you in the e2e slice allocation. You only need to do it manually if you are not testing with SO and instead, you are calling UUI & KPI MS directly (no SO involved)

PopulateAAIdata
curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://'$nfsServer':30233/aai/v21/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/11a9195f-c060-49dd-8f1b-6a4c8ab5d01n -d '{ 
  "service-instance-name": "e2eService1",
	"service-type": "embb",
	"service-role": "service-profile",
	"environment-context": "01-B989BD",
	"orchestration-status": "deactivated"}'

curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H  "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://'$nfsServer':30233/aai/v21/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/259fa29d-d589-4142-a4f0-a689a5061878 -d '{ 
    "service-instance-name": "e2eService2",
	"service-type": "embb",
	"service-role": "service-profile",
	"environment-context": "01-497651",
	"orchestration-status": "deactivated"}'


Deployment Prerequisite/dependencies for DCAE:

  1. VES, PM mapper and DataFile Collector, dcae-mongodb, Datalake Extraction Service(DES) and Datalake-feeder services should be running.

3. DCAE-MONGO DB:

  1. Login to dcae-mongodb container and execute following commands to check if PM data was saved in DB:
    1. mongo
    2. use datalake
    3. db.unauthenticatedperformancemeasurements.find({})
    4. to load sample data:

      mongodb sample data 1
      db.unauthenticatedperformancemeasurements.insert({
        "event": {
          "commonEventHeader": {
            "domain": "perf3gpp",
            "eventId": "dfe43a5c-0868-4275-b1c9-e45945b6a38c",
            "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult",
            "lastEpochMicrosec": 1610689590387,
            "priority": "Normal",
            "reportingEntityName": "",
            "sequence": 1,
            "sourceName": "cucpserver2",
            "startEpochMicrosec": 1610689590387,
            "version": 4,
            "vesEventListenerVersion": "7.1",
            "timeZoneOffset": "UTC+05:00"
          },
          "perf3gppFields": {
            "perf3gppFieldsVersion": "1.0",
            "measDataCollection": {
              "granularityPeriod": 900,
              "measuredEntityUserName": "",
              "measuredEntityDn": "cucpserver2",
              "measuredEntitySoftwareVersion": "r0.1",
              "measInfoList": [
                {
                  "measInfoId": {
                    "sMeasTypesList": "SLICE"
                  },
                  "measTypes": {
                    "sMeasTypesList": [
                      "PDUSessionEstSR.01-B989BD"
                    ]
                  },
                  "measValuesList": [
                    {
                      "suspectFlag": false,
                      "measResults": [
                        {
                          "p": 1,
                          "sValue": "166"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          }
        }
      })
      mongodb sample data 2
      db.unauthenticatedperformancemeasurements.insert({
        "event": {
          "commonEventHeader": {
            "domain": "perf3gpp",
            "eventId": "4ad683e3-40d0-47f5-8ba0-a8da51ff1ab5",
            "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult",
            "lastEpochMicrosec": 1606743157915,
            "priority": "Normal",
            "reportingEntityName": "",
            "sequence": 1,
            "sourceName": "cucpserver2",
            "startEpochMicrosec": 1606743157914,
            "version": 4,
            "vesEventListenerVersion": "7.1",
            "timeZoneOffset": "UTC+05:00"
          },
          "perf3gppFields": {
            "perf3gppFieldsVersion": "1.0",
            "measDataCollection": {
              "granularityPeriod": 900,
              "measuredEntityUserName": "",
              "measuredEntityDn": "cucpserver2",
              "measuredEntitySoftwareVersion": "r0.1",
              "measInfoList": [
                {
                  "measInfoId": {
                    "sMeasTypesList": "SLICE"
                  },
                  "measTypes": {
                    "sMeasTypesList": [
                      "PDUSessionEstSR.01-B989BD"
                    ]
                  },
                  "measValuesList": [
                    {
                      "suspectFlag": false,
                      "measResults": [
                        {
                          "p": 1,
                          "sValue": "188"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          }
        }
      })
      mongodb sample data 3
      db.unauthenticatedperformancemeasurements.insert({
        "event": {
          "commonEventHeader": {
            "domain": "perf3gpp",
            "eventId": "5105bf0e-f157-455f-b1eb-d686ddf39aa9",
            "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult",
            "lastEpochMicrosec": 1606753197538,
            "priority": "Normal",
            "reportingEntityName": "",
            "sequence": 1,
            "sourceName": "cucpserver2",
            "startEpochMicrosec": 1606753197537,
            "version": 4,
            "vesEventListenerVersion": "7.1",
            "timeZoneOffset": "UTC+05:00"
          },
          "perf3gppFields": {
            "perf3gppFieldsVersion": "1.0",
            "measDataCollection": {
              "granularityPeriod": 900,
              "measuredEntityUserName": "",
              "measuredEntityDn": "cucpserver2",
              "measuredEntitySoftwareVersion": "r0.1",
              "measInfoList": [
                {
                  "measInfoId": {
                    "sMeasTypesList": "SLICE"
                  },
                  "measTypes": {
                    "sMeasTypesList": [
                      "PDUSessionEstSR.01-B989BD"
                    ]
                  },
                  "measValuesList": [
                    {
                      "suspectFlag": false,
                      "measResults": [
                        {
                          "p": 1,
                          "sValue": "61"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          }
        }
      })
      mongodb sample data 4
      db.unauthenticatedperformancemeasurements.insert({
      	"event": {
      		"commonEventHeader": {
      			"domain": "perf3gpp",
      			"eventId": "24cf31f7-3def-43c1-85d8-4ad8041c5e08",
      			"eventName": "perf3gpp_RnNode-Slicing_pmMeasResult",
      			"lastEpochMicrosec": 1610689590387,
      			"priority": "Normal",
      			"reportingEntityName": "",
      			"sequence": 1,
      			"sourceName": "cucpserver1",
      			"startEpochMicrosec": 1610689590387,
      			"version": 4.0,
      			"vesEventListenerVersion": "7.1",
      			"timeZoneOffset": "UTC+05:30"
      		},
      		"perf3gppFields": {
      			"perf3gppFieldsVersion": "1.0",
      			"measDataCollection": {
      				"granularityPeriod": 900,
      				"measuredEntityUserName": "",
      				"measuredEntityDn": "cucpserver1",
      				"measuredEntitySoftwareVersion": "r0.1",
      				"measInfoList": [{
      					"measInfoId": {
      						"sMeasTypesList": "SLICE"
      					},
      					"measTypes": {
      						"sMeasTypesList": ["PDUSessionEstSR.01-497651"]
      					},
      					"measValuesList": [{
      						"suspectFlag": false,
      						"measResults": [{
      							"p": 1,
      							"sValue": "228"
      						}]
      					}]
      				}]
      			}
      		}
      	}
      })
      mongodb sample data 5
      db.unauthenticatedperformancemeasurements.insert({
      	"event": {
      		"commonEventHeader": {
      			"domain": "perf3gpp",
      			"eventId": "22ad0df1-958b-4136-9053-57c3967a6207",
      			"eventName": "perf3gpp_RnNode-Slicing_pmMeasResult",
      			"lastEpochMicrosec": 1606743157915,
      			"priority": "Normal",
      			"reportingEntityName": "",
      			"sequence": 1,
      			"sourceName": "cucpserver1",
      			"startEpochMicrosec": 1606743157914,
      			"version": 4.0,
      			"vesEventListenerVersion": "7.1",
      			"timeZoneOffset": "UTC+05:30"
      		},
      		"perf3gppFields": {
      			"perf3gppFieldsVersion": "1.0",
      			"measDataCollection": {
      				"granularityPeriod": 900,
      				"measuredEntityUserName": "",
      				"measuredEntityDn": "cucpserver1",
      				"measuredEntitySoftwareVersion": "r0.1",
      				"measInfoList": [{
      					"measInfoId": {
      						"sMeasTypesList": "SLICE"
      					},
      					"measTypes": {
      						"sMeasTypesList": ["PDUSessionEstSR.01-497651"]
      					},
      					"measValuesList": [{
      						"suspectFlag": false,
      						"measResults": [{
      							"p": 1,
      							"sValue": "137"
      						}]
      					}]
      				}]
      			}
      		}
      	}
      })
      mongodb sample data 6
      db.unauthenticatedperformancemeasurements.insert({
      	"event": {
      		"commonEventHeader": {
      			"domain": "perf3gpp",
      			"eventId": "c01bf72b-d4a3-42d6-a0bb-3d96bdacc503",
      			"eventName": "perf3gpp_RnNode-Slicing_pmMeasResult",
      			"lastEpochMicrosec": 1606753197538,
      			"priority": "Normal",
      			"reportingEntityName": "",
      			"sequence": 1,
      			"sourceName": "cucpserver1",
      			"startEpochMicrosec": 1606753197537,
      			"version": 4.0,
      			"vesEventListenerVersion": "7.1",
      			"timeZoneOffset": "UTC+05:30"
      		},
      		"perf3gppFields": {
      			"perf3gppFieldsVersion": "1.0",
      			"measDataCollection": {
      				"granularityPeriod": 900,
      				"measuredEntityUserName": "",
      				"measuredEntityDn": "cucpserver1",
      				"measuredEntitySoftwareVersion": "r0.1",
      				"measInfoList": [{
      					"measInfoId": {
      						"sMeasTypesList": "SLICE"
      					},
      					"measTypes": {
      						"sMeasTypesList": ["PDUSessionEstSR.01-497651"]
      					},
      					"measValuesList": [{
      						"suspectFlag": false,
      						"measResults": [{
      							"p": 1,
      							"sValue": "199"
      						}]
      					}]
      				}]
      			}
      		}
      	}
      })

4. Datalake Extraction Service(DES):

  1. Build presto image and push the images to a exsting repository
    1. Download and extract presto package version v0.0.2: presto-v0.0.2.tar.gz
    2. docker build -t presto:v0.0.2 .
    3. docker tag presto:v0.0.2 registry.baidubce.com/onap/presto:v0.0.2
    4. docker push registry.baidubce.com/onap/presto:v0.0.2
    5. Note: Replace the repository path with your own repository.
  2. Install presto service
    1. kubectl -n onap run dl-presto --image=presto:v0.0.2 --env="MongoDB_IP=dcae-mongohost" --env="MongoDB_PORT=27017" --image-pull-policy=IfNotPresent
    2. kubectl expose pod dl-presto --name=dl-presto --port=9000 --target-port=9000 --type=NodePort -n onap
  3. Login to the dev-dcae-datalake-postgres-primary container and execute following sql commands:

    datalake-db init_data
    psql -Udatalake -ddatalake
    \dt
    delete from map_db_topic;
    delete from map_db_design;
    delete from db;
    delete from data_exposure ;
    insert into db (id, db_type_id, enabled, encrypt, name,host,port,database_name) values (2, 'MONGO', true, true, 'MongoDB 1','dcae-mongohost',27017,'datalake');
    insert into map_db_topic(db_id,topic_id) select db.id, topic.id from db_type, db, topic where db.db_type_id=db_type.id and db_type.tool=false;
    update kafka set secure=true, pass='admin_secret' where id=1;
    insert into topic_name (id) values ('unauthenticated.PERFORMANCE_MEASUREMENTS'); insert into data_exposure(id, note,sql_template,db_id) values ('pDUSessionEstSR','pm_message', 'SELECT event.perf3gppFields.measDataCollection.measInfoList[1].measValuesList[1].measResults[1].sValue AS pDUSessionEstSR, from_unixtime(event.commonEventHeader.startEpochMicrosec/1000) AS timeStamp FROM unauthenticatedperformancemeasurements WHERE any_match(event.perf3gppFields.measDataCollection.measInfoList[1].measTypes.sMeasTypesList, e -> e like ''${id}'') AND event.commonEventHeader.startEpochMicrosec >= ${timeStamp}',2);
  4. Execute below request to verify: 

    curl --header "Content-type: application/json" --request POST --data '{"hours":4,"id":"PDUSessionEstSR.00110010","timeStamp":"1606743157914"}' http://dl-des:1681/datalake/v1/exposure/pDUSessionEstSR -i 

5. KPI - MS :

Deployment Prerequisite/dependencies
  - DCAE and DMaaP pods should be up and running. 
  - PM mapper service should be running.

Deployment steps ::

 - Clone the OOM repo - git clone "https://gerrit.onap.org/r/oom"
 - Go to the oom/kubernetes/dcaegen2-services/components directory, which has kpi component charts
 - Execute the command : make dcae-kpi-ms ( This will push the charts to the local repo)
 - Install the component using the following command : helm install dev-kpi-ms dcae-kpi-ms --namespace onap --set global.masterPassword=guilin2021

To load policies into the pdp container ::

  1.  curl -k --silent --user 'policyadmin:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes" -H "Accept: application/json" -H "Content-Type: application/json" -d @kpipolicytype.json
  2.  curl -k --silent --user 'policyadmin:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.monitoring.docker.kpims.app/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @kpipolicyinstance.json
  3. curl --silent -k --user 'policyadmin:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @deploykpipolicy.json


To create the dmaap topic - unauthenticated.DCAE_KPI_OUTPUT ::

curl --header "Content-type: application/json" --request POST --data '{"owner": "","txenabled": false,"topicName": "unauthenticated.DCAE_KPI_OUTPUT"}' http://<message-router-ip>:3904/topics/create

To view the published KPI event ::

 curl -k https://message-router.onap.svc.cluster.local:3905/events/unauthenticated.DCAE_KPI_OUTPUT/c1/g1

6. RANSIM :

Follow the steps below to setup the Ransim environment:

  1. Clone the repo from : git clone https://gerrit.onap.org/r/integration/simulators/ran-simulator
  2. Import the latest SDNC certificate into ransim

    1. Download the SDNC cacerts from browser.

    2. Import the cacert file into the directory ran-simulator/ransim/docker/config/ransim/ and name it as 'jssecacerts'.(Sample step to import shown below)

      • keytool -import -noprompt -trustcacerts -alias SDNC -file <certsfile> -keystore /ransim/docker/config/ransim/jssecacerts -storepass changeit

  3. Go to the ran-simulator/ransim directory and build the project : JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn clean install -P docker
  4. From docker folder, run the following after building the image locally and updating the SDNR IP address in the docker-compose file : docker-compose up
  5. Run the following command to start the RAN network slice simulation

    curl -X POST http://localhost:8081/ransim/api/StartRanSliceSimulation -i

    To access the logs:
    docker exec –ti ransim bash
    policy@ransim:/tmp/ransim-install$ tail -f /opt/app/policy/servers/ransim/logs/ransim-rest.log 
  6. Setup honeycomb (Refer HONEYCOMB section)
  7. You can update/add/delete data(throughput, PRBs, maxNoConns etc) in mariadb container(credentials in docker-compose file) if required before generation of PM data.
  8. Sample data to be loaded: ransim-intelligent-slicing-data.txt
  9. To view the CUCP honeycomb containers  logs:
    1. docker exec -ti cucpserver1 bash
    2. tail -f var/log/honeycomb/honeycomb.log
    3. docker exec -ti cucpserver2 bash
    4. tail -f var/log/honeycomb/honeycomb.log
  10. Check the folder(where SFTP setup is done) to view the generated PM data files.
  11. Access VES, data file collector, dmaap-dr, PM mapper, ml-prediction-ms and slice-analysis logs to verify.
  12. To manually generate PM data:
    1. curl -X POST -H "Content-Type:  text/plain" http://localhost:8081/ransim/api/GenerateIntelligentSlicingPmData -i
  13. To Stop PM data:
    1. curl -X POST -H "Content-Type:  text/plain" http://localhost:8081/ransim/api/stopIntelligentSlicingPmData -i


7. Honeycomb:

Repo URL: https://github.com/onap-oof-pci-poc/ran-sim

Pre-requisite: SDNC & Ransim controller should be up and running.

Build Steps:

If there is a new yang model, build the gnbsim-api with new yang model

Step 1: copy the new yang model to ~/ran-sim/hcsim-content/gnbsim/gnbsim-api/src/main/yang
Step 2: Go to directory ~/ran-sim/hcsim-content/gnbsim/gnbsim-api/
Step 3: Issue the build command "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn clean install -Dcheckstyle.skip"

For code changes in gnbsim-impl directory

Step 1: Do necessary code changes in gnbsim-impl
Step 2: Issue the build command "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn clean install -Dcheckstyle.skip"

Once the mvn build is done, build the docker image

  1. Go to directory ~/ran-sim/hcsim-content/gnbsim
  2. JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn clean install -Dcheckstyle.skip
  3. Import the latest VES certificate into this directory gnbsim-distribution/ 
    1. Download certificate from VES url https://<ipAddress>30417/eventListener/v7 
    2. cd  gnbsim/gnbsim-distribution/
    3. keytool -import -noprompt -trustcacerts -alias dcae -file <certsfile downloaded from VES URL> -keystore jssecacerts -storepass changeit
    4. keytool -importkeystore -srckeystore jssecacerts -srcstoretype pkcs12 -srcalias dcae -destkeystore jssecacerts -deststoretype jks -deststorepass changeit -destalias dcae
  4. cp -r gnbsim-distribution/jssecacerts gnbsim-distribution/target/gnbsim-distribution-1.19.08-SNAPSHOT-hc/gnbsim-distribution-1.19.08-SNAPSHOT/
  5. cp -r gnbsim-distribution/honeycomb gnbsim-distribution/target/gnbsim-distribution-1.19.08-SNAPSHOT-hc/gnbsim-distribution-1.19.08-SNAPSHOT/
  6. cp -r gnbsim-distribution/Dockerfile gnbsim-distribution/target/gnbsim-distribution-1.19.08-SNAPSHOT-hc/gnbsim-distribution-1.19.08-SNAPSHOT/
  7. docker build -t gn gnbsim-distribution/target/gnbsim-distribution-1.19.08-SNAPSHOT-hc/gnbsim-distribution-1.19.08-SNAPSHOT/


Cross check the docker image
docker images | grep gn

To run the Netconf Servers:

  1. cd ran-sim/hcsim-content/gnbsim/honeycomb
  2. Update Ransim(ransimIp), honeycomb(hcIp) and VES IP address at hc/config/gnbsim.json
    1. {
        "ransimIp": "<IPAddress>",
        "ransimPort": 8081,
        "hcIp": "<IPAddress>",
        "hcPort": 2850,
        "endpoint": "ransim/RansimAgent",
        "vesEventListenerUrl": "https://<IPAddress>:30417/eventListener/v7"
      }
  3. Update honeycomb  IP address at hc/docker-compose.yml file.
  4. Step 2(Updating IP Address in config/gnbsim.json) and Step 3(Updating IP Address in docker-compose.yml file) is repeated for all folders (hc, hc-1, cucp1, cucp2, cuup1,cuup2, du1, du2, du3, du4, du5, du6)

      2. Run the up.sh script in ran-sim/hcsim-content/gnbsim/honeycomb. (wait for all the honeycomb servers to come up)

         After execution of the above script, these servers will be mounted in SDNC(check ransim and SDNR logs if the mount request is successful for all the servers). 

         Access the restconf page to view the mounted servers: https://<WorkerVMIpAddress>:30267/apidoc/explorer/index.html


Setup SFPT:

  1. Run the below docker command in the VM where you have setup the netconf servers:

           docker run -v /home/$USER/upload:/home/$USER/sftptest/upload -p 2222:22 -d atmoz/sftp $USER:pass:1001

      2. Give chmod 777 to upload folder which will be created automatically in the home dir.

  • No labels