Cisco Optical Network Controller TAPI Northbound Interface

Cisco Optical Network Controller acts as an optical domain controller and exposes a standard T-API Northbound interface (NBI) towards northbound clients such as Hierarchical Controller. The TAPI NBI exposes standard RESTCONF and NETCONF interfaces to northbound clients. Any SDN-C client such as Hierarchical Controller can communicate with Cisco Optical Network Controller TAPI NBI Server (SDN-C) using any one these protocols and exchange TAPI model information.

TAPI Models

TAPI specification is based on the Open Networking Foundation's (ONF) Core Information Model (CIM) and is defined using UML. The specification is also mapped from UML to YANG modelling language. Cisco Optical Network Controller NBI supports TAPI Version 2.1.3.

The list of YANG models composing the TAPI information model can be found in the table below.

Table – List of TAPI YANG models

Model Version Revision (mm/dd/yyyy)
tapi-common.yang 2.1.3 04/23/2020
tapi-connectivity.yang 2.1.3 06/16/2020
tapi-dsr.yang 2.1.3 04/23/2020
tapi-equipment.yang 2.1.3 04/23/2020
tapi-eth.yang 2.1.3 04/23/2020
tapi-notification.yang 2.1.3 06/16/2020
tapi-oam.yang 2.1.3 04/23/2020
tapi-odu.yang 2.1.3 04/23/2020
tapi-path-computation.yang 2.1.3 04/23/2020
tapi-photonic-media.yang 2.1.3 06/16/2020
tapi-streaming.yang 2.1.3 06/16/2020
tapi-topology.yang 2.1.3 04/23/2020
tapi-virtual-network.yang 2.1.3 06/16/2020

T-API is based on a context relationship between server and client. A Context is an abstraction that allows for logical isolation and grouping of network resource abstractions for specific purposes/applications and/or information exchange with its users/clients over an interface.

TAPI NBI Protocols & Operations

Cisco Optical Network Controller TAPI NBI supports the following protocols for facilitating communication between SDN-C client and Cisco Optical Network Controller TAPI NBI Server (SDN-C).

  • RESTCONF
  • NETCONF

TAPI is a model-driven interface. Hence it is possible to execute large number of Data API over RESTCONF/NETCONF interface. Cisco Optical Network Controller TAPI NBI supports retrieval of configuration/operational data as per the TAPI Models supported by it. It also supports provisioning operations on specific configuration data model, and notifications for any configuration/operational data changes happening within the SDN-C. The following table summarizes various NBI operations possible over Cisco Optical Network Controller TAPI NBI. All supported operations are available on both RESTCONF and NETCONF interfaces.

Table – TAPI NBI Operations Overview

NBI Operation Type Data Type TAPI Context TAPI Model Path Comments
Retrieval Configuration/ Operational Common Context, Topology Context, Connectivity Context, Physical Context All valid model paths supported within Cisco Optical Network Controller TAPI NBI All Model Get API
Provisioning Configuration Connectivity Context /context/tapi-connectivity:connectivity-context Connectivity Service Create, Update and Delete API
Notification Configuration/ Operational Common Context, Topology Context, Connectivity Context, Physical Context All valid model paths supported within Cisco Optical Network Controller TAPI NBI All Create, Update and Delete Model Notifications.

Note:

  • The retrieval operations listed in this document covers typical TAPI use cases. However, it is possible to execute other retrieval operations as per the various model paths supported within Cisco Optical Network Controller TAPI Model.
  • Cisco Optical Network Controller TAPI NBI does not support TAPI standard notifications via notification-context. It only support NETCONF model notifications

TAPI Context

T-API is based on a context relationship between a server and client. A Context is an abstraction that allows for logical isolation and grouping of network resource abstractions for specific purposes/applications and/or information exchange with its users/clients over an interface. The following table lists the TAPI Contexts and the support within Cisco Optical Network Controller TAPI NBI.

Table 2 – TAPI contexts and support within Cisco Optical Network Controller TAPI NBI

TAPI Context Supported in ONC TAPI NBI Comments
tapi-common:context Y Includes SIPs and all other TAPI contexts
topology-context Y Includes Topological representations of the network. It represents both the Layering and Partitioning concepts within the transport network.
connectivity-context Y Includes the list of Connectivity-Service and Connection objects created within the TAPI Context
physical-context Y Includes the list of Devices and its containing equipment and access ports. Also covers the Physical Spans between the Access Ports.
notification-context N Includes the list of notification subscriptions and the list notifications emitted through each notification subscription stream
oam-context N Includes OAM services and related entities such as MEG.
path-computation-context N Includes the list of Path Computation Services requested to the TAPI server and the set of Path objects computed by the server.
stream-context N Includes notification streams
stream-admin-context N Includes stream monitoring
virtual-network-context N Includes virtual network services

Note: Cisco Optical Network Controller TAPI NBI does not support notification-context and TAPI standard notifications. However, it supports NETCONF Event Notifications.

TAPI Network Layers

The TAPI models the network as a set of layers forming a client-server relationship. The TAPI layer-protocol-name indicates the technology layers supported by TAPI while the layer-protocol-qualifier indicates the sub-layer supported within a specific technology. The following table indicates the network layers supported within TAPI and Cisco Optical Network Controller TAPI NBI.

Table – TAPI Network layers and support within Cisco Optical Network Controller TAPI NBI

TAPI layer-protocol-name Supported in ONC TAPI NBI TAPI layer-protocol-qualifier Supported List in ONC TAPI NBI Comments
PHOTONIC_MEDIA Y "PHOTONIC_LAYER_QUALIFIER_": [”OTSi”, ”OTSiA”, ”OTSiG”, ”NMC”, ”NMCA”, ”SMC”, ”SMCA”, ”OCH”, ”OMS”, ”OTS”, ”OTSiMC”, ”OTSiMCA”, ”MC”, ”MCA”] "PHOTONIC_LAYER_QUALIFIER_": [“OTS“, “OMS“, “MC“, “MCA“, “OTSiMC”, “OTSiMCA”] Models the Photonic Layers as per ITU-T G.872 (2017) version 4
ODU Y "ODU_TYPE_": [“ODU0”, “ODU1”, ”ODU2”, ”ODU2E”, ”ODU3”, ”ODU4”, ”ODU_FLEX”, ”ODU_CN”] "ODU_TYPE_": [”ODU2”, ”ODU2E”, ”ODU3”, ”ODU4”, ”ODU_CN”] Models the ODU layer as per ITU-T G.872/G.709
DSR Y “DIGITAL_SIGNAL_TYPE_" [“GigE”, ”10_GigE_LAN”, ”10_GigE_WAN”, ”40_GigE”, ”100_GigE”, ”FC_100”, ”FC_200”, ”FC_400”, ”FC_800”, ”FC_1200”, ”FC_1600”, ”FC_3200”, ”STM_1”, ”STM_4”, ”STM_16”, ”STM_64”, ”STM_256”, ”OC_3”, ”OC_12”, ”OC_48”, ”OC_192”, ”OC_768”, ”OTU_1”, ”OTU_2”, ”OTU_2E”, ”OTU_3”, ”OTU_4”, ”GPON”, ”XGPON”, ”IB_SDR”, ”IB_DDR”, ”IB_QDR”, ”SBCON_ESCON”, ”DVB_ASI”, ”SDI”, ”SDI_1G5”, ”SDI_3G”] “DIGITAL_SIGNAL_TYPE_" [”10_GigE_LAN”, ”40_GigE”, ”100_GigE”] Models a Digital Signal of an unspecified rate such as xGigE, FC-x, STM-x or OTU-k. Represents a generic DSR signal without making any statement on its format or overhead (processing) capabilities.
ETH N - - Models the ETH layer as per ITU-T G.8010

TAPI Notifications

Overview

Cisco Optical Network Controller TAPI RESTCONF NBI supports YANG-defined event notifications. It preserves aspects of NETCONF event notifications while utilizing the Server-Sent Events transport strategy. Notifications are generated whenever any data changes such as Create, Update or Delete happens within the TAPI database. Both Configuration and Operational data changes raise Notifications. Currently, Cisco Optical Network Controller TAPI NBI does not support Notification Replay feature.

Notification Subscription

TAPI client can subscribe for Notifications over the RESTCONF interface by using the following command: For JSON format:

curl --location --request GET 'https://{CONC-HOST}:8443/onc-nbi-service/restconf/streams/CONC_NETCONF/json' --user {username}:{password}

For XML format:

curl --location --request GET 'https://{CONC-HOST}:8443/onc-nbi-service/restconf/streams/CONC_NETCONF/xml' --user {username}:{password}

Create Notifications

Notification is generated when object is created in the TAPI CDB. Notification Example:

{
  "ietf-restconf:notification": {
    "eventTime": "2021-05-19T14:59:49.4605+00:00",
    "ietf-netconf-notifications:netconf-config-change": {
      "changed-by": {
        "username": "admin",
        "session-id": 0,
        "source-host": "10.43.16.101"
      },
      "datastore": "running",
      "edit": [
        {
          "target": "/tapi-common:context/tapi-equipment:physical-context/tapi-equipment:device[tapi-equipment:uuid='306b36c5-bc9c-3b3f-ad01-94e834c270fd']/tapi-equipment:equipment[tapi-equipment:uuid='92e8b512-33e6-3e73-a795-ad903413bf76']",
          "operation": "create"
        }
      ]
    }
  }
}

Update Notifications

Notification is generated when object attribute is updated in the TAPI CDB. Notification Example:

{
  "ietf-restconf:notification": {
    "eventTime": "2021-05-19T15:00:56.238614+00:00",
    "ietf-netconf-notifications:netconf-config-change": {
      "changed-by": {
        "username": "admin",
        "session-id": 0,
        "source-host": "10.43.16.101"
      },
      "datastore": "running",
      "edit": [
        {
          "target": "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service[tapi-connectivity:uuid='ad818bed-25da-34b9-b98b-a8f0c56333b0']/tapi-connectivity:lifecycle-state",
          "operation": "replace"
        }
      ]
    }
  }
}

Delete Notifications

Notification is generated when object is deleted from the TAPI CDB. Notification Example:

{
  "ietf-restconf:notification": {
    "eventTime": "2021-05-19T15:00:56.68858+00:00",
    "ietf-netconf-notifications:netconf-config-change": {
      "changed-by": {
        "username": "admin",
        "session-id": 0,
        "source-host": "10.43.16.101"
      },
      "datastore": "running",
      "edit": [
        {
          "target": "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection[tapi-connectivity:uuid='c6b01568-5508-3bf1-a2f5-67caf945bda4']",
          "operation": "delete"
        }
      ]
    }
  }
}

Note: Listen to the netconf stream notifications for impacted paths to do operations

The following is an example to understand which of the API to call:

Sample notification:

{
  "ietf-restconf:notification" : {
    "eventTime" : "2024-03-20T04:43:53.910+00:00",
      "datastore" : "running",
      "changed-by" : {
        "username" : "admin",
        "session-id" : 0,
        "source-host" : "127.0.0.1"
      },
      "edit" : [ {
        "target" : "/tapi-common:context/tapi-topology:topology-context/topology[uuid=‘abc’]/node[uuid=‘xyz’]”,
        "operation" : "create"
      } ]
    }
  }

Here use node uuid(‘xyz’) and topology uuid(‘abc’) from the notification target path in /restconf/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node API to fetch the complete node "ietf-netconf-notifications:netconf-config-change"