Deployment
For one-click deployment the teas chosen "docker-compose" as it is more flexible and can be easily converted to kubernetes/helm.
Prerequisites
Info |
---|
|
$ 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-compose version
docker-compose version 1.29.1, build c34c88b2
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
$ git clone "https://gerrit.o-ran-sc.org/r/oam"
$ cd oam/solution/integration /TODO update once merged
|
Please modify the /etc/hosts of your system.
- <your-system>: is the hostname of the system, where the browser is started
- <deloyment-system-ipv4>: is the IP address of the system where the solution will be deployed
For development purposes <your-system> and <deployment-system> may reference the same system.
Info |
---|
|
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 <your-system>
<deloyment-system-ipv4> sdnc-web <your-system>
<deloyment-system-ipv4> identity <your-system> |
Expected Folder Structure
The folder structure below helps addressing start commands and decouples the different involved project.
The folder 'network' includes docker compose file and its configuration from O-RAN-SC SIM O1-interface project.
The folder 'smo/non-rt-ric' includes docker compose file and its configuration from O-RAN-SC NON-RT-RIC project.
Info |
---|
|
├── network
│ ├── .env
│ ├── config.py
│ ├── docker-compose.yml
│ │
│ ├── ntsim-ng-o-du
│ └── ntsim-ng-o-ru
└── smo
├── common
│ ├── .env
│ ├── docker-compose.yml
│ │
│ ├── dmaap
│ ├── docker
│ ├── identity
│ ├── kafka
│ └── zookeeper
├── non-rt-ric
│ ├── .env
│ ├── docker-compose.yml
│ │
│ └── <config-folders>
└── oam
├── docker-compose.yml
│
├── sdnc-web
├── sdnr
└── ves-collector |
Usage
Customizing the solution
Please check and adjust your environment variables, if necessary.
Info |
---|
|
nano smo/common/.env
nano smo/non-rt-ric/.env
nano smo/oam/.env
nano network/.env |
Startup solution
Please note that it is necessary to configure first the identity service,
before starting further docker images.
The several docker-compose yml files must be started in the right order as listed below:
Info |
---|
|
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.
Info |
---|
|
docker-compose -f smo/non-rt-ric/docker-compose.yml up -d
docker-compose -f smo/oam/docker-compose.yml up -d |
Please wait about 2min until all the service are up and running.
If you see the login page (curl http://localhost:8181/odlux/index.html) you are good to go and can start the (simulated) network.
Info |
---|
|
docker-compose -f network/docker-compose.yml up -d
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
Log files and karaf console
OpenDaylight karaf.logs
Info |
---|
|
docker exec -it sdnr tail -f /opt/opendaylight/data/log/karaf.log |
karaf console access (karaf:karaf)
Info |
---|
|
ssh karaf@localhost -p 8101 |
ves-collector logs
Info |
---|
|
docker logs -f ves-collector |
Verification Solution
Login into SDN-R's UI called ODLUX
https://sdnc-web:8453
User: admin // see .env file
Password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
In case of trouble, please update the commands with your customized '.env' file.
The following picture show the connection status connected to the OAM Controller.
Image Added
The following figure shows NETCONF/YANG/O-RAN-Fronthaul/alarm-notify from O-RUs and VES:fault notifications. The WebUI (ODLUX) is automatically update based on websocket send northbound to a browser.
Image Added
The following figure show the configuration of the (simulated) O-DU implementing the o-ran-sc-hello-world.yang interface.
Image Added
Terminate solution
To stop all container please respect the following order
Info |
---|
|
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 |
Cleanup
!!! be careful if other stopped containers are on the same system.
Warning |
---|
|
docker system prune -a -f |
Troubleshooting
In most cases the .env setting do not fit to the environment and need to be adjusted.
Please make sure that the network settings to not overlap with other networks.
The commands ...
Info |
---|
|
docker ps -a docker network ls |
... are your friends.
etc"];
}
}
' End Diagram
' Format
left footer
<img:https://media-exp1.licdn.com/dms/image/C560BAQH0qSJJi67N4g/company-logo_200_200/0/1606867328974?e=2159024400&v=beta&t=OybMqHsK24YCp_WeGC10qJWJp-tsHu2GnjuF5gEeGSM{scale=0.2}> Copyright 2021 highstreet technologies USA Corp.
. This work is licensed under a Creative Commons Attribution 4.0 International License.
. SPDX-License-Identifier: CC-BY-4.0
. 2021-05-24 | o-ran.org | Thanks to PlantUML!
end footer
hide stereotype
skinparam backgroundColor #fefefe
skinparam backgroundColor #fefefe
'skinparam handwritten true
skinparam roundcorner 15
skinparam class {
BorderColor #444444
BackgroundColor #ffffdd
FontColor #444444
}
skinparam component {
BorderColor #444444
BackgroundColor #ffffdd
BackgroundColor<<control>> #ffff00
BackgroundColor<<compute>> #eeeeee
FontColor #444444
}
skinparam database {
BorderColor #444444
BackgroundColor #ffffdd
FontColor #444444
}
skinparam note {
BorderColor #444444
BackgroundColor #ffffdd
FontColor #444444
}
skinparam sequence {
MessageAlign left
ArrowThickness 2
ArrowColor #2277dd
ArrowFontColor #444444
ActorBorderColor #444444
LifeLineBorderColor #444444
LifeLineBackgroundColor #eeeeee
BoxBorderColor #444444
GroupBorderColor #444444
GroupBackgroundColor #eeeeee
ParticipantBorderColor #444444
ParticipantBackgroundColor #ffffdd
ParticipantFontColor #444444
ActorBackgroundColor #ffffdd
'ActorFontColor DeepSkyBlue
'ActorFontSize 17
'ActorFontName Aapex
}
@endumlDMZ
DMZ (demilitarized zone) contains and exposes external services to the internet (IPv4 only).
The network-id is 30 - the short name is dmz.
- IPv4
- Subnet: 172.30.0.0/16
- Gateway: 172.30.0.1
SMO
The primary network to exchange data between the physical nodes and virtual machines related to the SMO components.
The network-id is 40 - the short name is smo.
- IPv4
- Subnet: 172.40.0.0/16
- Gateway: 172.40.0.1
- IPv6
- Subnet: 2001:db8:1:40::/96
- Gateway: 2001:db8:1:40::1
OAM
The primary network for interactions between SMO-OAM components and network functions.
The network-id is 50 - the short name is oam.
IPv4- Subnet: 172.50.0.0/16
- Gateway: 172.50.0.1
IPv6Subnet: 2001:db8:1:50::/96Gateway: 2001:db8:1:50::1