SDNC R10 Jakarta Architecture Review

Project Overview

SDNC is a network controller based on CCSDK, which provides most of the base functionality used to implement the network controller. The SDNC project assembles those components, adding real-time configurable service logic (aka directed graphs) to implement network controller instances or "personas".



New component capabilities for Jakarta, i.e. the functional enhancements.

The following table lists the new functional requirements CCSDK/SDNC is committing to support for the Jakarta Release:

Requirements

Companies Supporting Requirement

Requirements

Companies Supporting Requirement

REQ-1042: 5G SON use case enhancements for Jakarta releaseDone

Wipro

REQ-890: ONAP CNF orchestration - Jakarta EnhancementsDone

Orange

REQ-1045: A1 Policy Functions - JakartaDone

Ericcson



Minimum Viable Product

The following epics represent the minimum viable product of the CCSDK/SDNC Jakarta Release:

key summary type created updated due assignee reporter priority status resolution
Loading...
Refresh

The following epics are also in scope for Jakarta, but are not considered of the minimum viable product.  In the event of unanticipated resource constraints, these could be reduced in scope or deferred without impacting any functionality deemed by the TSC as critical for Istanbul.

key summary type created updated due assignee reporter priority status resolution
Loading...
Refresh

These requirements require enhancements to existing CCSDK/SDNC functionality, as opposed to new interfaces. 

New or modified interfaces

For Jakarta, we plan to provide 2 implementations of GENERIC-RESOURCE-API:

  • The current implementation, implemented as an OSGi feature deployed in the OpenDaylight karaf container.

  • A new springboot-based microservice, which runs in a pod outside of OpenDaylight

We eventually would like to replace the current implementation with the springboot-based implementation, and run OpenDaylight as a separate pod.  However, there is still some work required to close feature gaps in the springboot-based implementation before we can do so without breaking existing functionality. 

In Jakarta, we plan to conduct a proof of concept of the work done to date.  For this proof of concept, we will replace the SDNC controller in our local kubernetes test environment with the springboot-based version and run the standard OOM gating test suite to determine whether that the implementation to date is fully backwards compatible.

If they are modified, are they backwards compatible?

Yes.  Care is taken to ensure backwards compatibility:

  • Any new fields added are declared as optional, with reasonable defaults assigned, so that version N of CCSDK/SDNC can be used with version N-1 of its interface peers.

Interface naming (point to an example)

CCSDK provides the following APIs which are exposed by SDNC:

  • A1-ADAPTOR-API : RESTCONF interface which implements O-RAN's A1 interface

  • ASDC-API : RESTCONF interface used to process certain non-TOSCA artifacts distributed by SDC (license model updates).

  • dataChange : RESTCONF interface pub/sub interface that allows controller to be notified on data change events (note: not currently used in ONAP use cases)

  • LCM : RESTCONF interface used to handle LifeCycle Management events

  • SLI-API : RESTCONF interface to service logic interpreter.  Used primarily for health check.

  • selfservice-api : gRPC interface used with CDS

  • oofpcipoc-api : RESTCONF interface used for OOF/PCI integration

SDNC itself also provides the following interfaces, not found in CCSDK:

  • GENERIC-RESOURCE-API : supports assignment of network resources, via automation and preloaded data]

Reference to the interfaces.

All APIs have Swagger documentation, which is referenced in readthedocs

What are the system limits?

Due to limitations inherent in OpenDaylight clustering - which is based on akka - SDNC should always be run with an odd number of replicas. This is needed to guarantee there can be no "ties" in the akka leader election procedure.

Involved use cases, architectural capabilities or functional requirements.



SDNC is used in the following use cases:

  • vFW

  • vDNS

  • vCPE

  • VoLTE

  • CCVPN

  • 5G

  • BBS



Listing of new or impacted models used by the project (for information only).

None