Service Management and Orchestration (SMO)

With respect to OAM the SMO implements the O1-interface provider. According to the O-RAN OAM Architecture and the O-RAN OAM Interface Specification, the SMO has a NetConf Client for configuration and HTTP/REST/VES Server for receiving all kind of events in a VES format.

The setup contains an OpenDaylight based NetConf client and a VES Test Collector.

Overview

This docker-compose file starts a pre-configured, self-contained SDN-R solution for developer test or demo purposes

  • SDN-R single node instance

    ... representing the NetConf consumer on the Service Management and Orchstration framework (SMO) for the O1 interface. ODL-Neon/CCSDK/SDNC-ElAlto

  • VES test collector

    ... representing the VES (REST) provider at SMO for all kind of events. DCAE-ElAlto/VES 5.0

  • NTSDevice simulator

    ... represents the NetConf Provider of an O-RAN component.

  • NetconfServerSimulator

    ... another simulator

Prerequisites

docker-compose file version 3.3 is used and tested with

  • Ubuntu 18.04 LTS
  • Docker version 19.03.x
  • docker-compose version 1.24.x
  • git version 2.17.1
  • docker-compose for the solution
  • enable git private docker registry, if used
cat /etc/os-release
docker --version
docker-compose --version
git --version
cd 
mkdir git
cd git
git clone  https://git-highstreet-technologies.com/highstreet/CICD_environment.git
cd CICD_environment/docker/solution/o-ran-dev

Usage

Bring Up Solution

  • Check (adjust if required) environment variables
cd ~/git/CICD_environment/docker/solution/o-ran-dev
nano .env
  • startup solution
cd ~/git/CICD_environment/docker/solution/o-ran-dev
docker-compose up -d

Log files and karaf console

  • ODL karaf.logs can be found on docker host
tail -f /var/tmp/sdnr/logs/karaf.log
  • karaf console access (karaf:karaf)
ssh karaf@localhost -p 8101
  • ves-testcollector logs
  tail -f /var/tmp/ves-v5/logs/evel-output.log

Customizing Solution

'.env' file contains customizing parameters

Verification Solution

Access to SDN-R UX

  • login into SDN-R http://<host_ip>:8181/odlux/index.html User:admin Password:admin

Connectivity NETCONF interface to simulator of type 'NTSdevice'

  • Mount simulated network element (default parameters if not changed in '.env'
    • Open 'Connect'
    • Required Network Elements: add ('+' sign)
    • Name: NTSDevice
    • IP: <host_ip>
    • Port: 2240
    • User: netconf
    • Password: netconf

Network Element 'NTSDevice' Should be connected

Connectivity NETCONF interface to simulator of type 'netconfserversimulator'

  • Mount simulated network element (default parameters if not changed in '.env'
    • Open 'Connect'
    • Required Network Elements: add ('+' sign)
    • Name: SIMTEST
    • IP: <host_ip>
    • Port: 2230
    • User: admin
    • Password: admin

Network Element 'SIMTEST' Should be connected

Connectivity SDN-R to VES-testcollector

  • verify VES-testcollector on host terminal
tail -f /var/tmp/ves-v5/logs/evel-output.log
  • heart beat events should be visible
Authenticated OK
==== Wed Aug 14 12:28:51 2019 =================================================
Valid body decoded & checked against schema OK:
{
  "event": {
      "commonEventHeader": {
          "domain": "heartbeat",
          "eventId": "testpattern-ab305d54-85b4-a31b-7db2-fb6b9e546015",
          "eventName": "heartbeat_Controller",
          "eventType": "Controller",
          "lastEpochMicrosec": 11087481660,
          "priority": "Low",
          "reportingEntityId": "",
          "reportingEntityName": "bf0c1c6deac1",
          "sequence": 7,
          "sourceId": "",
          "sourceName": "bf0c1c6deac1",
          "startEpochMicrosec": 11087481660,
          "version": 3.0
      },
      "heartbeatFields": {
          "additionalFields": [
              {
                  "name": "eventTime",
                  "value": "2019-08-14T12:28:51.5Z"
              }
          ],
          "heartbeatFieldsVersion": 1.0,
          "heartbeatInterval": 30
      }
  }
}172.20.0.3 - - [14/Aug/2019 12:28:51] "POST /eventListener/v5 HTTP/1.1" 202 0

Verify e2e event flow from 'NTSDevice' to VES-testcollector

NTSDevice simulator raise new alarms every 60 seconds. Time interval can be configured within .env file This alarm shoulld be visible within the ves testcollector log file

Verify e2e event flow from 'netconfserversimulator' to VES-testcollector

Raise test event via device simulator and check VES log file

  • login to simulator with admin:admin

    ssh admin@<host_IP> -p 8000
    
    
    • type 'n2' (or 'n1') for m and clear event
==== Wed Aug 14 12:36:34 2019 =================================================
Valid body decoded & checked against schema OK:
{
    "event": {
        "commonEventHeader": {
            "domain": "fault",
            "eventId": "SIMTEST_LP-MWPS-RADIO_signalIsLostMajor",
            "eventName": "fault_Microwave_Radio_Alarms_signalIsLostMajor",
            "eventType": "Microwave_Radio_Alarms",
            "lastEpochMicrosec": 1565786194600000,
            "priority": "High",
            "reportingEntityId": "",
            "reportingEntityName": "bf0c1c6deac1",
            "sequence": 23,
            "sourceId": "",
            "sourceName": "SIMTEST",
            "startEpochMicrosec": 1565786194600000,
            "version": 3.0
        },
        "faultFields": {
            "alarmAdditionalInformation": [
                {
                    "name": "eventTime",
                    "value": "2019-08-14T12:36:34.6Z"
                },
                {
                    "name": "equipType",
                    "value": "unknown"
                },
                {
                    "name": "vendor",
                    "value": "unknown"
                },
                {
                    "name": "model",
                    "value": "unknown"
                }
            ],
            "alarmCondition": "signalIsLostMajor",
            "alarmInterfaceA": "LP-MWPS-RADIO",
            "eventSeverity": "MAJOR",
            "eventSourceType": "Microwave_Radio",
            "faultFieldsVersion": 2.0,
            "specificProblem": "signalIsLostMajor",
            "vfStatus": "Active"
        }
    }
}172.20.0.3 - - [14/Aug/2019 12:36:34] "POST /eventListener/v5 HTTP/1.1" 202 0
  • type '~.' to exit ssh

Terminate solution

To stop all container:

cd ~/git/CICD_environment/docker/solution/o-ran-dev
docker-compose down

re-start solution at any point in time with

cd ~/git/CICD_environment/docker/solution/o-ran-dev
docker-compose up -d

Cleanup

!!! be careful if other stopped containers are on the same system

docker system prune -a -f
sudo rm -rf /var/tmp/ves-v5/

Troubleshooting

Issue: no VES events, no heartbeat events

  • For some reasons SDN-R overwrites DCAE settings in devicemanager.properties.
sudo docker-compose down
git checkout -- devicemanager.properties
sudo docker-compose up -d