Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

related Jira: 

Jira Legacy
serverSystem Jira
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-1094

related links: 

Design Principals

  • the entire communication between SDN-R and CPS is via DMaaP
  • an exception might be when SDN-R uses CPS as lookup DB to complete a request to the network (lookup)

Commands to SDN-R to get yang modules

Environment Variables

@protocol = https
@host = odlux.oam.smo.indigo.cosmos-lab.org
### @host = 10.41.1.2
@port = 443
@sdnrUsername = admin
@sdnrPassword = Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

@baseUrl = {{protocol}}://{{host}}:{{port}}

RestConf Request

Response

#### Step #1
### @namegetAllNodeIds
GET {{baseUrl}}/rests/data/network-topology:network-topology/topology=topology-netconf?content=nonconfig&fields=node(node-id)
Authorization:Basic {{sdnrUsername}} {{sdnrPassword}}
Accept:application/yang-data+json Code BlockHTTP/1.1 200 OK Content-Length: 166 Content-Type: application/yang-data+json Date: Wed, 09 Aug 2023 16:47:56 GMT Expires: Thu, 01 Jan 1970 00:00:00 GMT Server: nginx Set-Cookie: JSESSIONID

Table of Contents

Table of Contents

Design Principals

  • the entire communication between SDN-R and CPS is via DMaaP
  • an exception might be when SDN-R uses CPS as lookup DB to complete a request to the network (lookup)




ONAP internal data  vs. Network Function specific data

For backup or Initial (startup) configuration CPS could store the configuration data according to the Network Function (VNP, PNF) specific data models. 

Such data is most likely not abstracted to be used for multi-vendor, multi-layer, multi-technology use cases and should/could not be used by µServices addressing such use cases.

Multi-vendor, multi-layer, multi-technology µServices require an abstract view of the network. Therefore a translation service is required to translate between ONAP internal data models and Network Function specific data models.

The database technology for the ONAP internal data must be well defined and so that model-translation-functions can be implemented accordingly. SQL based on in the MariaDB implementation seems to be the right choice.

The database technology for Network Function specific data depends on the data and the Network Function specific data schema. If the data model schema bases on YANG, which usually describes a data tree, then a non-SQL database, could be the right choice. 

Drawio
bordertrue
diagramNamedata models
simpleViewerfalse
linksauto
tbstyletop
lboxtrue
diagramWidth522
revision1

Commands to SDN-R to get yang modules

The RestConf commands are available as vsCode REST Client format: https://lf-onap.atlassian.net/wiki/download/attachments/16412605/cps-sdn-r-interfaceing.http?api=v2.

To get the yang modules learnt by SDN-R it is recommended to request the yang-capabilites for each node (NetworkFunction).

Environment Variables

@protocol = https
@host = odlux.oam.smo.indigo.cosmos-lab.org
### @host = 10.41.1.2
@port = 443
@sdnrUsername = admin
@sdnrPassword = Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

@baseUrl = {{protocol}}://{{host}}:{{port}}


RestConf Request

Response (partial)

Step #1 is the command to request all known node-ids (network-function-names):


### @namegetAllNodeIds
GET {{baseUrl}}/rests/data/network-topology:network-topology/topology=topology-netconf?content=nonconfig&fields=node(node-id)
Authorization:Basic {{sdnrUsername}} {{sdnrPassword}}
Accept:application/yang-data+json


Code Block
HTTP/1.1 200 OK
Content-Length: 166
Content-Type: application/yang-data+json
Date: Wed, 09 Aug 2023 16:47:56 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Server: nginx
Set-Cookie: JSESSIONID=node01ea9dc8np27jcw3vocehlwcwo90929.node0; Path=/,rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 08-Aug-2023 16:47:56 GMT; SameSite=lax
X-Frame-Options: SAMEORIGIN
Connection: close

{
  "network-topology:topology": [
    {
      "node": [
        {
          "node-id": "O-RU-11222"
        },
        {
          "node-id": "O-DU-1122"
        },
####

[...]


In Step #2 itter the code should iterate over the list of node-ids to request the available yang capabilities. Here the example for node-id=O-RU-11222:

### @namegetConnectionStatus
@node-id=O-RU-11222
GET {{baseUrl}}/rests/data/network-topology:network-topology/topology=topology-netconf/node={{node-id}}?content=nonconfig&fields=netconf-node-topology:available-capabilities/available-capability/capability
Authorization:Basic {{sdnrUsername}} {{sdnrPassword}}
Accept:application/yang-data+json


Code Block
HTTP/1.1 200 OK
Content-Type: application/yang-data+json
Date: Wed, 09 Aug 2023 16:56:05 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Server: nginx
Set-Cookie: JSESSIONID=node0zsfdafr3nv0m1bi3uymdui3uw90955.node0; Path=/,rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 08-Aug-2023 16:56:05 GMT; SameSite=lax
X-Frame-Options: SAMEORIGIN
Connection: close
Transfer-Encoding: chunked

{
  "network-topology:node": [
    {
      "netconf-node-topology:available-capabilities": {
        "available-capability": [
          {
            "capability": "urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit"
          },
          {
            "capability": "urn:ietf:params:netconf:capability:notification:1.0"
          },
#### Step #3 itter over the capabilities
#### If

[...]


In Step #3 the capability attribute values must be parsed to identify the yang module name and its revision date. SDN-R provides the latest yang revision of the module, if no revision date is psecified you will get the latest avaialble.
given.

Here an example for the yang module 'o-ran-hardware' without the revision date in the request.

### @namegetASingleYangModuleNoRevision
@yangModuleNoRevision=o-ran-hardware
#### from "capability": "(urn:o-ran:hardware:1.0?revision=2022-12-05)o-ran-hardware"
#### .split(')')[1]
GET {{baseUrl}}/yang-schema/{{yangModuleNoRevision}}
Authorization:Basic {{sdnrUsername}} {{sdnrPassword}}
Accept:application/yang-data+json


Code Block
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/plain
Date: Wed, 09 Aug 2023 16:56:36 GMT
Server: nginx
X-Frame-Options: SAMEORIGIN
Connection: close
Transfer-Encoding: chunked

module o-ran-hardware {
  yang-version 1.1;
  namespace "urn:o-ran:hardware:1.0";
  prefix o-ran-hw;

  import ietf-hardware {
    prefix hw;
  }

  import iana-hardware {
    prefix ianahw;
  }

  import ietf-yang-types {
### @namegetASingleYangModule
@yangModule=

[...]


Here an example for the yang module 'o-ran-sync
@revision=' and the revision '2022-08-15
#### from "capability": "(urn:o-ran:sync:' - such request is recommended, to ensure that the revision implemented by the network-function is used .

### @namegetASingleYangModule
@yangModule=o-ran-sync
@revision=2022-08-15
#### from "capability": "(urn:o-ran:sync:1.0?revision=2022-08-15)o-ran-sync"
GET {{baseUrl}}/yang-schema/{{yangModule}}/
Authorization:Basic {{sdnrUsername}} {{sdnrPassword}}
Accept:application/yang-data+json

Code BlockHTTP/1.1



The entire RESTCONF APIs can be uploaded from SDN-R as OpenAPI specification:


Code Block
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/plain
Date: Wed, 09 Aug 2023 16:57:08 GMT
Server: nginx
X-Frame-Options: SAMEORIGIN
Connection: close
Transfer-Encoding: chunked

module o-ran-sync {
  yang-version 1.1;
  namespace "urn:o-ran:sync:1.0";
  prefix o-ran-sync;

  import ietf-interfaces {
    prefix if;
  }

  import o-ran-interfaces {
    prefix o-ran-int;

ONAP internal data  vs. Network Function specific data

For backup or Initial (startup) configuration CPS could store the configuration data according to the Network Function (VNP, PNF) specific data models. 

Such data is most likely not abstracted to be used for multi-vendor, multi-layer, multi-technology use cases and should/could not be used by µServices addressing such use cases.

Multi-vendor, multi-layer, multi-technology µServices require an abstract view of the network. Therefore a translation service is required to translate between ONAP internal data models and Network Function specific data models.

The database technology for the ONAP internal data must be well defined and so that model-translation-functions can be implemented accordingly. SQL based on in the MariaDB implementation seems to be the right choice.

The database technology for Network Function specific data depends on the data and the Network Function specific data schema. If the data model schema bases on YANG, which usually describes a data tree, then a non-SQL database, could be the right choice. 

DrawiobordertruediagramNamedata modelssimpleViewerfalsewidthlinksautotbstyletoplboxtruediagramWidth522revision1

Sequence Diagram

Status: under discussion 2020-03-01

related Jira: 

Jira Legacy
serverSystem Jira
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-1094

related links: 

Design Principals

  • the entire communication between SDN-R and CPS is via DMaaP
  • an exception might be when SDN-R uses CPS as lookup DB to complete a request to the network (lookup)

ONAP internal data  vs. Network Function specific data

For backup or Initial (startup) configuration CPS could store the configuration data according to the Network Function (VNP, PNF) specific data models. 

Such data is most likely not abstracted to be used for multi-vendor, multi-layer, multi-technology use cases and should/could not be used by µServices addressing such use cases.

Multi-vendor, multi-layer, multi-technology µServices require an abstract view of the network. Therefore a translation service is required to translate between ONAP internal data models and Network Function specific data models.

The database technology for the ONAP internal data must be well defined and so that model-translation-functions can be implemented accordingly. SQL based on in the MariaDB implementation seems to be the right choice.

The database technology for Network Function specific data depends on the data and the Network Function specific data schema. If the data model schema bases on YANG, which usually describes a data tree, then a non-SQL database, could be the right choice. 

DrawiobordertruediagramNamedata modelssimpleViewerfalsewidthlinksautotbstyletoplboxtruediagramWidth522revision1

[...]


Sequence Diagram

Status: under discussion 2020-03-01