X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=solution%2FREADME.md;h=273e70734361da4475830f8a47fb555dc6144e43;hb=a4c402d1a200767c39d0d1241ee229ae1673d29e;hp=90d7ff7ef8caf6ac09241f70a8e08fa08b2fb5e5;hpb=55f6fa0cba33c73b5ba6cb3a9c74b13bf45a7da0;p=oam.git diff --git a/solution/README.md b/solution/README.md index 90d7ff7..273e707 100644 --- a/solution/README.md +++ b/solution/README.md @@ -35,6 +35,14 @@ with the following components. ## Prerequisites +### Resources + +The solution was tested on a VM with + +- 4x Core +- 16 GBit RAM +- 50 Gbit Storage + ### Operating (HOST) System ``` @@ -54,8 +62,8 @@ Please follow the required docker daemon configuration as documented in the foll ### Docker Compose ``` -$ docker-compose version -Docker Compose version v2.16.0 +$ docker compose version +Docker Compose version v2.17.2 ``` ### GIT @@ -88,6 +96,10 @@ export PYTHONWARNINGS="ignore:Unverified HTTPS request" ### ETC Host (DNS function) +Please change in the different .env files the environment variable 'HOST_IP' +to the IP address of the system where you deploy the solution - search for +'aaa.bbb.ccc.ddd' and replace it. + Please modify the /etc/hosts of your system. * \: is the hostname of the system, where the browser is started @@ -103,88 +115,16 @@ $ cat /etc/hosts # SMO OAM development system smo.o-ran-sc.org - gateway.smo.o-ran-sc.org + gateway.smo.o-ran-sc.org identity.smo.o-ran-sc.org messages.smo.o-ran-sc.org - ves-collector.oam.smo.o-ran-sc.org + kafka-bridge.smo.o-ran-sc.org odlux.oam.smo.o-ran-sc.org - controller.oam.smo.o-ran-sc.org - -``` - -### VES Schemas - -Please ensure that you download and copy the required 3GPP OpenAPIs for VES-stndDefined -message validation into the folder [./smo/oam/ves-collector/externalRepo](./smo/oam/ves-collector/externalRepo). - -Please follow the instructions in [./smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md](./smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md). - -The following tree shows the successfully tested folder structure. It combines different versions of the schemas ('Rel16' ) using 3GPP branch names. - -``` -$ tree solution/operation-and-maintenance/smo/oam/ves-collector/externalRepo/ -solution/operation-and-maintenance/smo/oam/ves-collector/externalRepo/ -├── 3gpp -│   └── rep -│   └── sa5 -│   └── MnS -│   └── raw -│   └── Rel-16 -│      └── OpenAPI -│      ├── README.md -│   ├── TS28532_FaultMnS.yaml -│   ├── TS28532_FileDataReportingMnS.yaml -│   ├── TS28532_HeartbeatNtf.yaml -│   ├── TS28532_PerfMnS.yaml -│   ├── TS28532_ProvMnS.yaml -│   ├── TS28532_StreamingDataMnS.yaml -│   ├── TS28536_CoslaNrm.yaml -│   ├── TS28541_5GcNrm.yaml -│   ├── TS28541_NrNrm.yaml -│   ├── TS28541_SliceNrm.yaml -│   ├── TS28550_PerfMeasJobCtrlMnS.yaml -│   ├── TS28623_ComDefs.yaml -│   ├── TS28623_GenericNrm.yaml -│   ├── TS29512_Npcf_SMPolicyControl.yaml -│   ├── TS29514_Npcf_PolicyAuthorization.yaml -│   └── TS29571_CommonData.yaml -``` - -## Expected Folder Structure - -The following figure show the expected folder structure for the different -docker-compose file and its configurations. - -``` -├── network -│ ├── .env -│ ├── config.py -│ ├── docker-compose.yml -│ │ -│ ├── ntsim-ng-o-du -│ └── ntsim-ng-o-ru -└── smo - ├── apps - │ ├── .env - │ ├── docker-compose.yml - │ └── flows - ├── common - │ ├── .env - │ ├── docker-compose.yml - │ │ - │ ├── docker - │ ├── gateway - │ ├── identity - │ ├── messages - │ ├── kafka - │ └── zookeeper - └── oam - ├── .env - ├── docker-compose.yml - │ - ├── odlux - ├── controller - └── ves-collector + flows.oam.smo.o-ran-sc.org + tests.oam.smo.o-ran-sc.org + controller.dcn.smo.o-ran-sc.org + ves-collector.dcn.smo.o-ran-sc.org + ``` ## Usage @@ -197,18 +137,16 @@ The following commands should be invoked. More detailed can be found in the next chapters. ``` -docker-compose -f smo/common/docker-compose.yml up -d -# wait until the cpu load is low again +docker compose -f smo/common/docker-compose.yml up -d python smo/common/identity/config.py -docker-compose -f smo/oam/docker-compose.yml up -d -docker-compose -f smo/apps/docker-compose.yml up -d +docker compose -f smo/oam/docker-compose.yml up -d +docker compose -f smo/apps/docker-compose.yml up -d # wait until the cpu load is low again -docker-compose -f network/docker-compose.yml up -d -# wait about 2min -docker restart ntsim-ng-o-du-1122 +docker compose -f network/docker-compose.yml up -d +docker compose -f network/docker-compose.yml restart ntsim-ng-o-du-1122 ntsim-ng-o-du-1123 python network/config.py ``` @@ -228,7 +166,7 @@ before starting further docker images. The several docker-compose yml files must be started in the right order as listed below: ``` -docker-compose -f smo/common/docker-compose.yml up -d +docker compose -f smo/common/docker-compose.yml up -d python smo/common/identity/config.py ``` @@ -237,7 +175,7 @@ A system user (%USER) is also created with administration rights. ``` -docker-compose -f smo/oam/docker-compose.yml up -d +docker compose -f smo/oam/docker-compose.yml up -d ``` Looking into the ONAP SDN-R logs will give you the startup procedure. @@ -249,20 +187,20 @@ docker logs -f controller If you see the login page (https://odlux.oam.smo.o-ran-sc.org) you are good to go and can start the (simulated) network. ``` -docker-compose -f network/docker-compose.yml up -d +docker compose -f network/docker-compose.yml up -d ``` Usually the first ves:event gets lost. Please restart the O-DU docker container(s) to send a second ves:pnfRegistration. ``` -docker-compose -f network/docker-compose.yml restart ntsim-ng-o-du-1122 +docker compose -f network/docker-compose.yml restart ntsim-ng-o-du-1122 python network/config.py ``` The python script configures the simulated O-DU and O-RU according to O-RAN hybrid architecture. -O-DU - NETCONF Call HOME and NETCONF notifications -O-RU - ves:pnfRegistration and ves:fault, ves:heartbeat +O-RU - NETCONF Call HOME and NETCONF notifications +O-DU - ves:pnfRegistration and ves:fault, ves:heartbeat ![ves:pnfRegistration in ODLUX](docs/nstim-ng-connected-after-ves-pnf-registration-in-odlux.png "ves:pnfRegistration in ODLUX") @@ -297,13 +235,21 @@ docker logs -f ves-collector #### Access to SDN-R ODLUX -##### Login into SDN-R - https://odlux.oam.smo.o-ran-sc.org - User: admin // see .env file + User: admin - Password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U + Password: // see .env file + +In case of trouble, please update the commands with your customized '.env' file. + +#### Access to Node Red Flows + + https://flows.oam.smo.o-ran-sc.org + + User: admin + + Password: // see .env file In case of trouble, please update the commands with your customized '.env' file. @@ -312,10 +258,10 @@ In case of trouble, please update the commands with your customized '.env' file. To stop all container please respect the following order ``` -docker-compose -f network/docker-compose.yml down -docker-compose -f smo/apps/docker-compose.yml down -docker-compose -f smo/oam/docker-compose.yml down -docker-compose -f smo/common/docker-compose.yml down +docker compose -f network/docker-compose.yml down +docker compose -f smo/apps/docker-compose.yml down +docker compose -f smo/oam/docker-compose.yml down +docker compose -f smo/common/docker-compose.yml down ``` ### Cleanup @@ -336,3 +282,81 @@ The commands ... docker ps -a docker-compose ps docker rm -f $(docker ps -aq) + +## Commands in action + +``` +$ docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" +NAMES IMAGE STATUS +$ docker compose -f smo/common/docker-compose.yml up -d +[+] Running 9/9 + ✔ Network smo Created 0.1s + ✔ Network dmz Created 0.1s + ✔ Container zookeeper Started 1.6s + ✔ Container persistence Started 1.5s + ✔ Container identitydb Started 1.2s + ✔ Container gateway Healthy 12.1s + ✔ Container kafka Started 2.2s + ✔ Container identity Started 13.4s + ✔ Container messages Started 13.4s +$ python3 smo/common/identity/config.py +Got token! +User leia.organa created! +User r2.d2 created! +User luke.skywalker created! +User jargo.fett created! +User role jargo.fett supervision created! +User role leia.organa administration created! +User role luke.skywalker provision created! +User role r2.d2 administration created! +$ docker compose -f smo/oam/docker-compose.yml up -d +[+] Running 4/4 + ✔ Network oam Created 0.1s + ✔ Container controller Healthy 83.4s + ✔ Container ves-collector Started 1.2s + ✔ Container odlux Started 84.0s +$ docker compose -f smo/apps/docker-compose.yml up -d +WARN[0000] Found orphan containers ([odlux controller ves-collector]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. +[+] Running 1/1 + ✔ Container flows Started 0.9s +$ docker compose -f network/docker-compose.yml up -d +WARN[0000] Found orphan containers ([flows odlux controller ves-collector]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. +[+] Running 6/6 + ✔ Container ntsim-ng-o-du-1123 Started 2.6s + ✔ Container ntsim-ng-o-ru-11223 Started 2.2s + ✔ Container ntsim-ng-o-ru-11221 Started 1.9s + ✔ Container ntsim-ng-o-ru-11224 Started 1.9s + ✔ Container ntsim-ng-o-du-1122 Started 2.4s + ✔ Container ntsim-ng-o-ru-11222 Started 2.3s +$ docker compose -f network/docker-compose.yml restart ntsim-ng-o-du-1122 ntsim-ng-o-du-1123 +[+] Running 2/2 + ✔ Container ntsim-ng-o-du-1122 Started 2.8s + ✔ Container ntsim-ng-o-du-1123 Started 2.9s +$ python3 network/config.py +Set O-RU-11221 True +Set O-RU-11224 True +Set O-RU-11222 True +Set O-DU-1123 True +Set O-DU-1122 True +Set O-RU-11223 True +$ docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" +NAMES IMAGE STATUS +ntsim-ng-o-ru-11221 nexus3.o-ran-sc.org:10004/o-ran-sc/nts-ng-o-ran-ru-fh:1.6.2 Up 4 minutes +ntsim-ng-o-ru-11224 nexus3.o-ran-sc.org:10004/o-ran-sc/nts-ng-o-ran-ru-fh:1.6.2 Up 4 minutes +ntsim-ng-o-ru-11222 nexus3.o-ran-sc.org:10004/o-ran-sc/nts-ng-o-ran-ru-fh:1.6.2 Up 4 minutes +ntsim-ng-o-du-1123 o-ran-sc/nts-ng-o-ran-du-rel-18:1.6.2 Up 54 seconds +ntsim-ng-o-du-1122 nexus3.o-ran-sc.org:10004/o-ran-sc/nts-ng-o-ran-du:1.6.2 Up About a minute +ntsim-ng-o-ru-11223 nexus3.o-ran-sc.org:10004/o-ran-sc/nts-ng-o-ran-ru-fh:1.6.2 Up 4 minutes +flows nodered/node-red:latest-configured Up 4 minutes (healthy) +odlux nexus3.onap.org:10001/onap/sdnc-web-image:2.4.2 Up 7 minutes +controller nexus3.onap.org:10001/onap/sdnc-image:2.4.2 Up 8 minutes (healthy) +ves-collector nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.10.1-configured Up 8 minutes (healthy) +messages nexus3.onap.org:10001/onap/dmaap/dmaap-mr:1.1.18 Up 11 minutes +identity bitnami/keycloak:18.0.2 Up 11 minutes +kafka nexus3.onap.org:10001/onap/dmaap/kafka111:1.0.4 Up 11 minutes +zookeeper nexus3.onap.org:10001/onap/dmaap/zookeeper:6.0.3 Up 11 minutes +identitydb bitnami/postgresql:13 Up 11 minutes +persistence docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.3 Up 11 minutes +gateway traefik:v2.9 Up 11 minutes (healthy) +$ +```