X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=solution%2Fintegration%2FREADME.md;h=73100a4d31a84fb0de9beeb52b639df249ab0fcf;hb=6edf9b8277d9660a01528c4a29847d2796de1eab;hp=0c39c3271457bb3611f79a86edff3dc8f1ded2a9;hpb=13a8f4e2f4a6cf0f4ac01260bd6b1c14b62975e3;p=oam.git diff --git a/solution/integration/README.md b/solution/integration/README.md index 0c39c32..73100a4 100644 --- a/solution/integration/README.md +++ b/solution/integration/README.md @@ -23,27 +23,38 @@ The setup contains an OpenDaylight based NetConf client and a VES Collector. ## Overview -This docker-compose file starts a pre-configured, self-contained SDN-R solution +This docker-compose file starts a pre-configured, self-contained SDN-R solution for developer test or demo purposes * **Identity** - ... representing an KeyCloak based identity service for centralized user - management. Please note that the implementation does not support IPv6. + ... representing an KeyCloak based identity service for centralized user + management. Please note that the implementation does not support IPv6. Therefore, its own network is required called 'DMZ'. + In this configuration the external https port is 8463. * **SDN-R** single node instance - ... representing the NetConf consumer on the Service Management and - Orchestration framework (SMO) for the O1 interface based on + ... representing the NetConf consumer on the Service Management and + Orchestration framework (SMO) for the O1 interface based on ODL-Silicon/ONAP-Istanbul + SDN-R comes with is own web-portal the external port is 8463. * **VES collector** - ... representing the VES (REST) provider at SMO for all kind of events. + ... representing the VES (REST) provider at SMO for all kind of events. In this configuration the external https port is 8443. * **DMaaP** ... representing SMO DMaaP component, includes message-router + * **ONAP-Policy** + ... representing all the components of ONAP policy framework, in particular + the policy-apex-pdp which executes the apex policies deployed in the framework + when a certain event occurs. + + * **Non-RT-RIC** + ... representing all the components of Non-RT-RIC, includes Non-RT-RIC Control Panel, Non-RT-RIC (Spring Cloud) Service Gateway, A1 Policy Management Services, + Enrichment Data Coordinator, Non-RT-RIC App Catalogue, "HelloWorld" O-RU Fronthaul Recovery use-case, Near-RT RIC A1 Simulator etc. + ## Prerequisites ``` @@ -51,7 +62,7 @@ $ cat /etc/os-release | grep PRETTY_NAME PRETTY_NAME="Ubuntu 20.04.2 LTS" $ docker --version -Docker version 20.10.2, build 20.10.2-0ubuntu1~20.04.2 +Docker version 20.10.7, build 20.10.7-0ubuntu1~20.04.2 $ docker-compose version docker-compose version 1.29.1, build c34c88b2 @@ -59,6 +70,7 @@ docker-py version: 5.0.0 CPython version: 3.7.10 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019 + $ git --version git version 2.25.1 @@ -79,6 +91,13 @@ $ cat /etc/hosts identity ``` +It is beneficial (but not mandatory) adding the following line add the +end of your ~/.bashrc file. I will suppress warnings when python script +do not verify self signed certificates for HTTPS communication. +``` +export PYTHONWARNINGS="ignore:Unverified HTTPS request" +``` + ## Expected Folder Structure ``` @@ -98,18 +117,25 @@ $ cat /etc/hosts │ ├── docker │ ├── identity │ ├── kafka + │ ├── o-ran-sc-topology-service │ └── zookeeper ├── non-rt-ric - │ ├── .env │ ├── docker-compose.yml │ │ - │ └── - └── oam + │ ├── test + │ ├── data + │ └── config + ├── oam + │ ├── docker-compose.yml + │ │ + │ ├── sdnc-web + │ ├── sdnr + │ └── ves-collector + └── onap-policy ├── docker-compose.yml │ - ├── sdnc-web - ├── sdnr - └── ves-collector + ├── config + └── wait_for_port.sh ``` ## Usage @@ -125,6 +151,12 @@ nano smo/oam/.env nano network/.env ``` +The tested configuration uses the following external https ports: + + * 8443 for the ves-collector + * 8453 for web access to ODLUX (SDNC_WEB_PORT) + * 8463 for the keyclock web administrator user interface. + #### Startup solution Please note that it is necessary to configure first the identity service, @@ -133,30 +165,72 @@ 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 -python smo/common/identity/config.py +docker-compose -f smo/common/docker-compose.yml up -d +python smo/common/identity/config.py ``` The python script configure the users within the identity service (keycloak). A system user (%USER) is also created with administration rights. ``` -docker-compose -f smo/non-rt-ric/docker-compose.yml up -d -docker-compose -f smo/oam/docker-compose.yml up -d +docker-compose -f smo/onap-policy/docker-compose.yml up -d +docker-compose -f smo/oam/docker-compose.yml up -d +docker-compose -f smo/non-rt-ric/docker-compose.yml up -d ``` +In order to create/deploy the apex policy for O-RU closed loop recovery use case, +refer to the section named "Create/Deploy apex policy for O-RU & O-DU use case" in +this page: +https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=35881325 + +Please note that the above instructions assume that the ToscaPolicy.json file +with default config needs to be deployed. However, when there is a need to update +the config (for example, to change the O-RU to O-DU mapping), a new ToscaPolicy.json +file needs to be created. Refer to the section named "Workflow for updating the policy config" +in this page: +https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=35881325 + Please wait about 2min until all the service are up and running. If you see the login page (https://sdnc-web:8453) you are good to go and can start the (simulated) network. +### populate data into Non-RT-RIC + +Full instruction on how to run Non-RT-RIC can be found in this page: + + +When containers in Non-RT-RIC are all up, by default, there is no data running inside. Folder `non-rt-ric/data/` contains several scripts to populate data into Non-RT-RIC for test & demo purpose. + +``` +bash prepareDmaapMsg.sh +``` + +script `prepareDmaapMsg.sh` sends messages to DMaaP message router, then Non-RT-RIC policy-agent service polls messages from DMaaP, and creates policy instances accordingly. + +``` +bash preparePmsData.sh +``` + +script `preparePmsData.sh` sends http requests to policy-agent service, and creates policy instances accordingly. + +``` +bash prepareEcsData.sh +``` + +script `prepareIcsData.sh` sends http requests to ics service, and creates data accordingly. + +Afterwards, open webpage: + +Now we should see some data in the page. + ``` -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 -python network/config.py +python network/config.py ``` The python script configures the simulated O-DU and O-RU according to O-RAN hybrid architecture. @@ -168,9 +242,9 @@ O-RU - 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") 'True' indicated that the settings through SDN-R to the NETCONF server were -successful. +successful. -SDN-R reads the fault events from DMaaP and processes them. +SDN-R reads the fault events from DMaaP and processes them. Finally the fault events are visible in ODLUX. ![ves:fault in ODLUX](docs/ves-fault-in-odlux.png "ves:fault in ODLUX") @@ -196,6 +270,20 @@ ssh karaf@localhost -p 8101 docker logs -f ves-collector ``` +#### onap-policy apex logs + +``` +docker logs policy-apex-pdp +``` + +#### Non-RT-RIC logs + +``` +docker logs policy-agent +docker logs oru-app +docker logs ecs +``` + ### Customizing Solution '.env' file contains customizing parameters @@ -209,20 +297,35 @@ docker logs -f ves-collector https://sdnc-web:8453 User: admin // see .env file - + Password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U In case of trouble, please update the commands with your customized '.env' file. +#### Access to Topology Service + +``` +curl -u admin:admin http://localhost:18181/rests/data/network-topology:network-topology/topology=topology-netconf/node=o-ran-sc-topology-service/yang-ext:mount/tapi-common:context/tapi-topology:topology-context +``` + +#### Access to Wireshark + +``` + http://localhost:3000 +``` + +Select the interfaces you would like to capture. +As first guess, please select the bridge interfaces. ### Terminate solution To stop all container please respect the following order ``` -docker-compose -f network/docker-compose.yml down -docker-compose -f smo/oam/docker-compose.yml down -docker-compose -f smo/non-rt-ric/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/oam/docker-compose.yml down +docker-compose -f smo/onap-policy/docker-compose.yml down +docker-compose -f smo/non-rt-ric/docker-compose.yml down +docker-compose -f smo/common/docker-compose.yml down ``` ### Cleanup