1 # Service Management and Orchestration (SMO)
3 ##### Table of Contents
4 [Service Management and Orchestration (SMO)](#service-management-and-orchestration-smo)
5 - [Introduction](#introduction)
6 - [Overview](#overview)
7 - [Prerequisites](#prerequisites)
9 - [Bring Up Solution](#bring-up-solution)
10 - [Log files and karaf console](#log-files-and-karaf-console)
11 - [Customizing Solution](#customizing-solution)
12 - [Verification Solution](#verification-solution)
13 - [Access to SDN-R UX](#access-to-sdn-r-ux)
14 - [Terminate solution](#terminate-solution)
16 - [Troubleshooting](#troubleshooting)
20 With respect to OAM the SMO implements the O1-interface consumers. According to the O-RAN OAM Architecture and the O-RAN OAM Interface Specification, the SMO implements a NetConf Client for configuration and a HTTP/REST/VES server for receiving all kind of events in a VES format.
22 The setup contains an OpenDaylight based NetConf client and a VES Collector.
26 This docker-compose file starts a pre-configured, self-contained SDN-R solution
27 for developer test or demo purposes
30 ... representing an KeyCloak based identity service for centralized user
31 management. Please note that the implementation does not support IPv6.
32 Therefore, its own network is required called 'DMZ'.
34 * **SDN-R** single node instance
36 ... representing the NetConf consumer on the Service Management and
37 Orchestration framework (SMO) for the O1 interface based on
38 ODL-Silicon/ONAP-Istanbul
42 ... representing the VES (REST) provider at SMO for all kind of events.
45 ... representing SMO DMaaP component, includes message-router
48 ... representing all the components of ONAP policy framework, in particular
49 the policy-apex-pdp which executes the apex policies deployed in the framework
50 when a certain event occurs.
55 $ cat /etc/os-release | grep PRETTY_NAME
56 PRETTY_NAME="Ubuntu 20.04.2 LTS"
59 Docker version 20.10.2, build 20.10.2-0ubuntu1~20.04.2
61 $ docker-compose version
62 docker-compose version 1.29.1, build c34c88b2
63 docker-py version: 5.0.0
64 CPython version: 3.7.10
65 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
71 Please modify the /etc/hosts of your system.
73 * <your-system>: is the hostname of the system, where the browser is started
75 * <deployment-system-ipv4>: is the IP address of the system where the solution will be deployed
77 For development purposes <your-system> and <deployment-system> may reference the same system.
82 127.0.1.1 <your-system>
83 <deployment-system-ipv4> sdnc-web <your-system>
84 <deployment-system-ipv4> identity <your-system>
87 ## Expected Folder Structure
93 │ ├── docker-compose.yml
100 │ ├── docker-compose.yml
109 │ ├── docker-compose.yml
111 │ └── <config-folders>
113 │ ├── docker-compose.yml
119 ├── docker-compose.yml
127 ### Bring Up Solution
129 #### Check (adjust if required) environment variables
133 nano smo/non-rt-ric/.env
138 #### Startup solution
140 Please note that it is necessary to configure first the identity service,
141 before starting further docker images.
143 The several docker-compose yml files must be started in the right order as listed below:
146 docker-compose -f smo/common/docker-compose.yml up -d
147 python smo/common/identity/config.py
150 The python script configure the users within the identity service (keycloak).
151 A system user (%USER) is also created with administration rights.
154 docker-compose -f smo/non-rt-ric/docker-compose.yml up -d
155 docker-compose -f smo/onap-policy/docker-compose.yml up -d
156 docker-compose -f smo/oam/docker-compose.yml up -d
159 In order to create/deploy the apex policy for O-RU closed loop recovery usecase,
160 refer to the section named "Create/Deploy apex policy for O-RU & O-DU use case" in
162 https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=35881325
164 Please note that the above instructions assume that the ToscaPolicy.json file
165 with default config needs to be deployed. However, when there is a need to update
166 the config (for example, to change the O-RU to O-DU mapping), a new ToscaPolicy.json
167 file needs to be created. Refer to the section named "Workflow for updating the policy config"
169 https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=35881325
171 Please wait about 2min until all the service are up and running.
172 If you see the login page (https://sdnc-web:8453) you are good to go and can start the (simulated) network.
175 docker-compose -f network/docker-compose.yml up -d
178 Usually the first ves:event gets lost. Please restart the O-DU docker container(s) to send a second ves:pnfRegistration.
181 docker-compose -f network/docker-compose.yml restart ntsim-ng-o-du-1122
182 python network/config.py
185 The python script configures the simulated O-DU and O-RU according to O-RAN hybrid architecture.
187 O-DU - NETCONF Call HOME and NETCONF notifications
188 O-RU - ves:pnfRegistration and ves:fault, ves:heartbeat
191 ![ves:pnfRegistration in ODLUX](docs/nstim-ng-connected-after-ves-pnf-registration-in-odlux.png "ves:pnfRegistration in ODLUX")
193 'True' indicated that the settings through SDN-R to the NETCONF server were
196 SDN-R reads the fault events from DMaaP and processes them.
197 Finally the fault events are visible in ODLUX.
199 ![ves:fault in ODLUX](docs/ves-fault-in-odlux.png "ves:fault in ODLUX")
202 ### Log files and karaf console
207 docker exec -it sdnr tail -f /opt/opendaylight/data/log/karaf.log
210 #### karaf console access (karaf:karaf)
213 ssh karaf@localhost -p 8101
216 #### ves-collector logs
219 docker logs -f ves-collector
222 #### onap-policy apex logs
225 docker logs policy-apex-pdp
228 ### Customizing Solution
230 '.env' file contains customizing parameters
232 ### Verification Solution
234 #### Access to SDN-R ODLUX
236 ##### Login into SDN-R
238 https://sdnc-web:8453
240 User: admin // see .env file
242 Password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
244 In case of trouble, please update the commands with your customized '.env' file.
246 ### Terminate solution
248 To stop all container please respect the following order
251 docker-compose -f network/docker-compose.yml down
252 docker-compose -f smo/oam/docker-compose.yml down
253 docker-compose -f smo/onap-policy/docker-compose.yml down
254 docker-compose -f smo/non-rt-ric/docker-compose.yml down
255 docker-compose -f smo/common/docker-compose.yml down
260 !!! be careful if other stopped containers are on the same system
262 docker system prune -a -f
266 In most cases the .env setting do not fit to the environment and need to be
269 Please make sure that the network settings to not overlap with other networks.
277 # python3, tmux, libtmux
278 tmux new-session -n workspace -s integration
280 # within tmux session
281 python tmux-logging.py
283 ... are your friends.
285 ![tmux logging](docs/tmux-logging.png "tmux logging")