...
- The service name given for creating the policy must match with the service name in the request
- The scope fields in the policies should match with the value in the resourceSharingLevel(non-shared/shared). Do modify the policy accordingly.
- Check the case of the attributes with the OOF request with the attribute map (camel to snake and snake to camel) in config/slicing_config.yaml, if any mismatch found modify the attribute map accordingly.
You need to restart the OOF docker container once you updated the slicing_config.yaml, you can do it using the following steps,
- Login to the worker VM where the OOF container is running. You can find the worker node by running (kubectl get pods -n onap -o wide | grep dev-oof)
- Find the container using docker ps | grep optf-osdf
- Restart the container using docker restart <container id>
CPS Configuration:
Refer CPS Configuration to setup standalone CPS and configuration of OOF and CPS.
6. Core NF Simulator Setup
...
Refer ACTN Simulator User Guide to setup ACTN-simulator or follow the below steps to launch and initialize domain controllers,
Refer Transport Slicing Configuration and Operation Guidance for NextHop details of AN &CN
Step 1. Fetch the simulator docker image
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
curl -k -X PUT "https://AAI:AAI@<worker-vmIp>:30233/aai/v23/external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/ff9ef162-951d-4e14-9ce6-b4fa0adf896b" \ -H 'Accept: application/json' \ -H 'X-FromAppId: AAI' \ -H 'X-TransactionId: 1' \ -H 'Content-Type: application/json' \ -d '{ "thirdparty-sdnc-id":"ff9ef162-951d-4e14-9ce6-b4fa0adf896b", "location": "edge", "product-name": "TSDN", "esr-system-info-list":{"esr-system-info":[{ "esr-system-info-id": "7c29b9df-feef-4fa7-b56d-3e39f5ef4a90", "system-name": "sdnc2", "vendor": "HUAWEI", "type": "WAN", "version": "v1.0", "service-url": "http://<simulator-ip>:<simulator-port>", "user-name": "onos", "password": "rocks", "system-type": "thirdparty_SDNC", "protocol": "restconf" }]} }' |
E2E network slicing test(using resource occupancy details)
Before creating shared communication service for testing NSI/NSSI selection using resource occupancy details, below manual configurations must be done:
Deployment Prerequisite/dependencies
- VES, PM mapper and DataFile Collector, dcae-mongodb, Datalake Extraction Service(DES) and Datalake-feeder services should be running.
Datalake Extraction Service(DES):
- Build presto image and push the images to a exsting repository
- Download and extract presto package version v0.0.2: presto-v0.0.2.tar.gz
- docker build -t presto:v0.0.2 .
- docker tag presto:v0.0.2 registry.baidubce.com/onap/presto:v0.0.2
- docker push registry.baidubce.com/onap/presto:v0.0.2
- Note: Replace the repository path with your own repository.
- Install presto service
- kubectl -n onap run dl-presto --image=presto:v0.0.2 --env="MongoDB_IP=dcae-mongohost" --env="MongoDB_PORT=27017" --image-pull-policy=IfNotPresent
- kubectl expose pod dl-presto --name=dl-presto --port=9000 --target-port=9000 --type=NodePort -n onap
- Login to the dev-dcae-datalake-postgres-primary container and execute following sql commands:
Code Block language text title
...
datalake-db init_data linenumbers true collapse true 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 topic(id, topic_name_id,correlate_cleared_message,enabled, message_id_path,data_format) values (6, 'unauthenticated.PERFORMANCE_MEASUREMENTS',true,true,'/event/commonEventHeader','JSON'); insert into data_exposure(id, note,sql_template,db_id) values ('pm_data','pm_message', 'SELECT json_format(CAST( event.perf3gppFields.measDataCollection.measInfoList[1].measTypes.sMeasTypesList AS JSON)) AS sMeasTypesList, json_format(CAST( event.perf3gppFields.measDataCollection.measInfoList[1].measValuesList AS JSON)) AS measValuesList FROM unauthenticatedperformancemeasurements WHERE any_match(event.perf3gppFields.measDataCollection.measInfoList[1].measTypes.sMeasTypesList, e -> e like ''${snssai}'') AND event.commonEventHeader.startEpochMicrosec >= ${time}',2); //db_id refers to mongodb in table db, this template filters PM data based on snssai and startEpochMicrosec;
Load sample data in mongo db(refer DCAE mongodb section)
- Execute below request to verify: curl --header "Content-type: application/json" --request POST --data '{"snssai":"SM.PrbUsedDl.01-910EF6","time":"1649853949111"}' http://dl-des:1681/datalake/v1/exposure/pm_data -i
Datalake Feeder:
- Restart datalake-feeder container after loading above configurations in the DB.
POLICY :
The following policies are to be included for the OOF optimisation based on resource occupancy . Refer Optimization Policy Creation Steps for optimization policy creation and deployment steps.
View file name resource-occupancy-policies.zip height 150
RANSIM :
- RANSIM and honeycomb containers should be running
- 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.
- RANSIM must contain 'plmninfo' of the service which is to be shared with other services. Then generate closed-loop PM data which will be stored in mongo-db by datalake-feeder.
- Sample closed loop data: closed-loop-data.txt
- Run the following command to generate Closed Loop PM data:
- curl -X POST http://localhost:8081/ransim/api/generateClosedLoopPmData -i
- Run the following command to stop Closed Loop PM data(When enough PM data is generated):
- curl -X GET http://localhost:8081/ransim/api/stopClosedLoopPmData -i
- Access the DU honeycomb containers to view the logs:
- docker container logs -f 110
- Check the folder(where SFTP setup is done) to view the generated PM data files.
- Access VES, data file collector, dmaap-dr, PM mapper and slice-analysis logs to verify.
DCAE-MONGO DB:
- Login to dcae-mongodb container and execute following commands to check if PM data was saved in DB:
- mongo
- use datalake
- db.unauthenticatedperformancemeasurements.find({})
- to load sample data:
Code Block | |||
---|---|---|---|
|
...
| |||||
db.unauthenticatedperformancemeasurements.insert({
"event":{
"commonEventHeader":{
"domain":"perf3gpp",
"eventId":"95e79282-2876-4000-8192-b514ad7f399a",
"sequence":0,
"eventName":"perf3gpp_RnNode-Slicing_pmMeasResult",
"sourceName":"220",
"reportingEntityName":"",
"priority":"Normal",
"startEpochMicrosec":1651216762867,
"lastEpochMicrosec":1651216762868,
"version":"4.0",
"vesEventListenerVersion":"7.1",
"timeZoneOffset":"UTC+05:30"
},
"perf3gppFields":{
"perf3gppFieldsVersion":"1.0",
"measDataCollection":{
"granularityPeriod":900,
"measuredEntityUserName":"",
"measuredEntityDn":"220",
"measuredEntitySoftwareVersion":"r0.1",
"measInfoList":[
{
"measInfoId":{
"sMeasInfoId":"measInfoIsVal"
},
"measTypes":{
"sMeasTypesList":[
"SM.PrbUsedDl.01-3C5C90",
"SM.PrbUsedUl.01-3C5C90"
]
},
"measValuesList":[
{
"measObjInstId":"15155",
"suspectFlag":"false",
"measResults":[
{
"p":1,
"sValue":"5"
},
{
"p":2,
"sValue":"7"
}
]
},
{
"measObjInstId":"15174",
"suspectFlag":"false",
"measResults":[
{
"p":1,
"sValue":"6"
},
{
"p":2,
"sValue":"7"
}
]
},
{
"measObjInstId":"15175",
"suspectFlag":"false",
"measResults":[
{
"p":1,
"sValue":"15"
},
{
"p":2,
"sValue":"4"
}
]
},
{
"measObjInstId":"15176",
"suspectFlag":"false",
"measResults":[
{
"p":1,
"sValue":"5"
},
{
"p":2,
"sValue":"14"
}
]
},
{
"measObjInstId":"15825",
"suspectFlag":"false",
"measResults":[
{
"p":1,
"sValue":"0"
},
{
"p":2,
"sValue":"14"
}
]
}
]
}
]
}
}
}
}) |