... 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.
* **Controller** single node instance
... representing the NETCONF consumer on the Service Management and
- Orchestration framework (SMO) for the O1 interface based on
- ODL.
- SDN-R comes with is own web-portal the external port is 8463.
+ Orchestration framework (SMO) for O-RAN O1 interface and/or O-RAN OpenFronthaul Management Plane and/or other NETCONF/YANG schemas implemented by the OpenDaylight project.
* **VES collector**
- ... representing the VES (REST) provider at SMO for all kind of events. In this configuration the external https port is 8443.
+ ... representing the VES (REST) provider at SMO for all kind of events.
* **Messages**
... representing SMO MessageRouter component, includes message-router
## Prerequisites
+### Operating (HOST) System
+
```
$ cat /etc/os-release | grep PRETTY_NAME
-PRETTY_NAME="Ubuntu 22.04.1 LTS"
+PRETTY_NAME="Ubuntu 22.04.2 LTS"
+```
+
+### Docker
+```
$ docker --version
-Docker version 20.10.12, build 20.10.12-0ubuntu4
+Docker version 23.0.1, build a5ee5b1
+```
+Please follow the required docker daemon configuration as documented in the following README.md:
+- [./smo/common/docker/README.md](./smo/common/docker/README.md)
+
+### Docker Compose
-$ docker-compose version
-docker-compose version 1.29.2, build unknown
-docker-py version: <module 'docker.version' from '/usr/local/lib/python3.10/dist-packages/docker/version.py'>
-CPython version: 3.10.6
-OpenSSL version: OpenSSL 3.0.2 15 Mar 2022
+```
+$ docker compose version
+Docker Compose version v2.17.2
+```
+### GIT
+```
$ git --version
git version 2.34.1
+```
+
+### Python
```
+$ python3 --version
+Python 3.10.6
+```
+
+A python parser package is required.
+```
+sudo apt install python3-pip
+pip install jproperties
+```
+
+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"
+```
+
+### ETC Host (DNS function)
+
Please modify the /etc/hosts of your system.
* \<your-system>: is the hostname of the system, where the browser is started
```
-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"
-```
-
-Please ensure that you download and copy the required 3GPP OpenAPIs for VES-stndDefined
-message validation into the folder './solution/operation-and-maintenance/smo/oam/ves-collector/externalRepo'.
-
-Please follow the instructions in ./solution/operation-and-maintenance/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/blob/Rel16/OpenAPI/README.md.
-
-The following tree shows the successfully tested folder structure. It combines different versions of the schemas ('Rel16' and 'SA88-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
-│ └── blob
-│ ├── Rel16
-│ │ └── 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
-│ └── SA88-Rel16
-│ └── OpenAPI
-│ ├── 5gcNrm.yaml
-│ ├── PerDataFileReportMnS.yaml
-│ ├── PerMeasJobCtlMnS.yaml
-│ ├── PerThresMonMnS.yaml
-│ ├── PerfDataStreamingMnS.yaml
-│ ├── README.md
-│ ├── comDefs.yaml
-│ ├── coslaNrm.yaml
-│ ├── faultMnS.yaml
-│ ├── genericNrm.yaml
-│ ├── heartbeatNtf.yaml
-│ ├── nrNrm.yaml
-│ ├── provMnS.yaml
-│ ├── sliceNrm.yaml
-│ └── streamingDataMnS.yaml
-```
-
## Expected Folder Structure
The following figure show the expected folder structure for the different
│ ├── ntsim-ng-o-du
│ └── ntsim-ng-o-ru
└── smo
+ ├── apps
+ │ ├── .env
+ │ ├── docker-compose.yml
+ │ └── flows
├── common
│ ├── .env
│ ├── docker-compose.yml
│ │
- │ ├── messages
│ ├── docker
+ │ ├── gateway
│ ├── identity
+ │ ├── messages
│ ├── kafka
│ └── zookeeper
└── oam
next chapters.
```
-docker-compose -f smo/common/docker-compose.yml up -d
+docker compose -f smo/common/docker-compose.yml up -d
# wait until the cpu load is low again
python smo/common/identity/config.py
-docker-compose -f smo/oam/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
+docker compose -f network/docker-compose.yml up -d
# wait about 2min
docker restart ntsim-ng-o-du-1122
python network/config.py
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,
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
```
```
-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.
```
-docker logs -f sdnr
-```
-
-The startup was successful when you see the following line:
-
-```
-Everything OK in Certificate Installation
+docker logs -f controller
```
-If you see the login page (https://sdnc-web:8453) you are good to go and can start the (simulated) network.
+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
```
#### ODL karaf.logs
```
-docker exec -it sdnr tail -f /opt/opendaylight/data/log/karaf.log
+docker exec -it controller tail -f /opt/opendaylight/data/log/karaf.log
```
#### ves-collector logs
##### Login into SDN-R
- https://sdnc-web:8453
+ https://odlux.oam.smo.o-ran-sc.org
User: admin // see .env file
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/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
```
docker ps -a
docker-compose ps
+docker rm -f $(docker ps -aq)