X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=docs%2Fdeveloper-guide%2Funi-manager-plug-in-developer-guide.rst;h=fedbd3a505a925f5e4757a4bd9f1f1d0820aa90d;hb=1cb14399495fca6dba51d0e551d1ab810807629c;hp=8d6718c3265015edfed17afcd45aeeeca706592b;hpb=6db7dd8c6e1b7a5162a3d6fa88d60c3caf87cdd4;p=docs.git diff --git a/docs/developer-guide/uni-manager-plug-in-developer-guide.rst b/docs/developer-guide/uni-manager-plug-in-developer-guide.rst index 8d6718c32..fedbd3a50 100644 --- a/docs/developer-guide/uni-manager-plug-in-developer-guide.rst +++ b/docs/developer-guide/uni-manager-plug-in-developer-guide.rst @@ -1,561 +1,664 @@ -UNI Manager Plug-In Developer Guide -=================================== +.. _unimgr-dev-guide: -The UNI Manager plug in exposes capabilities of OpenDaylight to -configure networked equipment to operate according to Metro Ethernet -Forum (MEF) requirements for User Network Interface (UNI) and to support -the creation of an Ethernet Virtual Connection (EVC) according to MEF -requirements. +User Network Interface Manager Plug-in (Unimgr) Developer Guide +=============================================================== -UNI Manager adheres to a minimum set of functionality defined by MEF 7.2 -and 10.2 specifications. +Overview +-------- -Functionality -------------- +The User Network Interface (UNI) Manager project within OpenDaylight provides +data models and APIs that enable software applications and service +orchestrators to configure and provision connectivity services; in particular, +Carrier Ethernet services as defined by MEF Forum, in physical and virtual +network elements. -The UNI manager plugin enables the creation of Ethernet Virtual -Connections (EVC) as defined by the Metro Ethernet Forum (MEF). An EVC -provides a simulated Ethernet connection among LANs existing at -different geographical locations. This version of the plugin is limited -to connecting two LANS. +Unimgr Architecture +------------------- -As defined by MEF, each location to be connected must have a User -Network Interface, (UNI) which is a device that connects the user LAN to -the EVC providers network. +Unimgr provides support for both service orchestration, via the Legato API, and +network resource provisioning, via the Presto API. These APIs, and the +interfaces they provide, are defined by YANG models developed within MEF in +collaboration with ONF and IETF. An application/user can interact with Unimgr +at either layer. Presto and Legato APIs are for LSO Architecture reference points +defined in `MEF 55 specification `_. -UNI and EVC are implemented via Open vSwitch, leveraging the OVSDB -project: creating a UNI will end up creating an OVSDB node with an -*ovsbr0* bridge, interface and port. While creating a UNI, based on the -MEF requirement, one can specify a desired QoS; this leverages the QoS -and Queue tables from the OVS database. (see documentation bellow for -full details). Same goes with the EVC, to which one can apply a given -QoS to control the speed of the connection. Creating an EVC will add two -additional ports to the *ovsbr0* bridge: +Presto layer +```````````` +.. figure:: ./images/unimgr/architecture.png + :scale: 65 + :alt: Presto layer Architecture -- *eht0*: the interface connected to a client laptop +In current version of Unimgr the recent version of Presto NRP is supported. +This model is based on Transport API (TAPI) from ONF. This API allows for +management of connectivity services and exposes abstract topology of the +managed infrastracture. By its nature Presto NRP write and update operations +are defined as set of RPC calls. All the reads operation can be either specific +RPCs or via RESTCONF data tree. -- *gre1*, interface used to for gre tunnelling between two clients - (VXLAN). +Presto layer architecture is depicted in figure above. There are two +distinctive parts of Presto NRP business logic Activation Service and +Activation Driver. Activation Service part of the framework is to encapsulate +the common logic whereas Activation Driver is a way to encapsulate business +logic to transform Presto Request into a given underlying technology. This way +we are able to handle multi-vendor infrastructures and address various use +cases as vendors specific code is encapsulated in drivers. -Finally, within this release, UniMgr is more a Proof Of Concept than a -framework to be used in production. Previous demonstrations were made -using Raspberry Pis, having a low NIC bandwith, thus the speed as -defined in the API is actually mapped as follow: +Activation Service +.................. -- ``speed-10M`` ⇒ 1 Mb +Activation service is responsible for handling the connectivity request. In +case of service activation following steps are performed: -- ``speed-100M`` ⇒ 2 Mb +1. Validation of a request (e.g. if all endpoints exists) -- ``speed-1G`` ⇒ 3 Mb +2. Decomposition of a request into number of drivers sub-requests -- ``speed-10G`` ⇒ 4 Mb +3. Activation of the request for selected drivers -UNI Manager REST APIs ---------------------- +4. Update of the data model and creating ``ConnectivityService`` and ``Connection`` objects for the request -This API enables the creation and management of both UNI’s and EVCs. In -order to create an EVC using this interface you would first create two -UNI’s via the following REST API (see documentation below for full -details) +Step 1. Implements only minimal functionality. -:: - - PUT http://:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/ - -You would then create an EVC, indicating that it is a connection between -the two UNI’s that were just created, via the following REST API (see -documentation below for full details) - -:: +Step 2. Allows for multi-vendor configuration as decomposition mechanisms +defines all drivers required to satisfy given connectivity request. Currently +only p2p connectivity services are supported in the decomposition mechanism. - PUT http://:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/ +Both validation and decomposition mechanisms are plug-able thus users can +support more sophisticated scenarios. -You can then change attributes of the UNI’s or EVCs, and delete these -entities using this API (see documentation below for full details). -This plugin uses the OpenDaylight OVSDB plugin to provision and the -manage devices which implement the OVSDB REST interface, as needed to -realize the UNI and EVC life-cycles +Activation Driver +................. -.. note:: - - Both the configuration and operational databases can be operated - upon by the unimgr REST API. The only difference between the two is - in the REST Path. The configuration datastore represents the desired - state, the operational datastore represents the actual state. - -For operating on the config database - -:: +.. figure:: ./images/unimgr/drivers.png + :scale: 90 + :alt: Presto NRP topology and drivers - http://:8181/restconf/config/ +Activation Driver has two main responsibilities: -For operating on the operational database +* to handle connectvitiy service requests -:: +* to contribute to Presto Topology with abstract nodes driver can handle - http://:8181/restconf/operational/ +In figure above example topology and drivers are shown. As you can see it is up +to driver how to model infrastructure it manages. Thus, driver A has decided to +model all devices as single virtual node, whereas driver C is exposing every +single device as a node. -The documentation below shows examples of both +The connectivity service is defined between ``ServiceInterfacePoint`` (SIP) +which are mapped to ``NodeEdgePoint`` (NEP). A SIP can have UNI, ENNI or INNI +role. Assigning a SIP to NEP can be done automatically by driver of with the +use of Unimgr extension API. It is assumed that driver can connect eny number +of SIPs related to NEPs for every ``Node`` it exposes. -CREATE UNI -~~~~~~~~~~ +There is a contract for a given Karaf bundle to be recognized as a driver. The +following must be fulfiled: -:: +* A driver have to expose an OSGI service that implements + ``org.opendaylight.unimgr.mef.nrp.api.ActivationDriverBuilder`` - PUT http://:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/ +* Implement a component that is responsible for writing to topology (in general + the requirement is to add at least a single node to topology with id + ``org.opendaylight.unimgr.mef.nrp.api.TapiConstants#PRESTO_SYSTEM_TOPO`` -.. note:: +There are three drivers maintained as part of Unimgr project: - uni-id is determined by and supplied by the caller both in the path - and the body of the rest message +:template-driver: Which is intended as a template for real drivers development. + It is not connected to infrastructure. +:ovs-driver: Which is a driver for OpenFlow infrasturcture. +:cisco-xr-driver: A netconf driver for Cisco XR devices for MPLS inter-connectivity -Request Body +Key APIs and Interfaces +----------------------- -:: +Legato YANG models: +https://git.opendaylight.org/gerrit/gitweb?p=unimgr.git;a=tree;f=legato-api/src/main/yang;hb=refs/heads/stable/nitrogen - { - "network-topology:node": [ - { - "node-id": "uni-id", - "speed": { - "speed-1G": 1 - }, - "uni:mac-layer": "IEEE 802.3-2005", - "uni:physical-medium": "100BASE-T", - "uni:mode": "syncEnabled" - "uni:type": "UNITYPE", - "uni:mtu-size": 1600, - "uni:mac-address": "68:5b:35:bb:f8:3e", - "uni:ip-address": "192.168.2.11", - } - ] - } - -Response on success: 200 - -Input Options +Presto YANG models: +https://git.opendaylight.org/gerrit/gitweb?p=unimgr.git;a=tree;f=presto-api/src/main/yang;hb=refs/heads/stable/nitrogen -:: +Legato API Tree +--------------- - "speed" - "speed-10M" - "speed-100M" - "speed-1G" - "speed-10G" - "uni:mac-layer" - "IEEE 802.3-2005" - uni:physical-medium - "10BASE-T" - "100BASE-T" - "1000BASE-T" - "10GBASE-T" - "uni:mode" - "syncEnabled" - "syncDisabled" - "uni:type" - "UNITYPE" - "uni:mtu-size" - 1600 reccomended - -On OVS, the QoS, the Queue were updated, and a bridge was added: +module: mef-services :: - mininet@mininet-vm:~$ sudo ovs-vsctl list QoS - _uuid : 341c6e9d-ecb4-44ff-a21c-db644b466f4c - external_ids : {opendaylight-qos-id="qos://18db2a79-5655-4a94-afac-94015245e3f6"} - other_config : {dscp="0", max-rate="3000000"} - queues : {} - type : linux-htb - - mininet@mininet-vm:~$ sudo ovs-vsctl list Queue - _uuid : 8a0e1fc1-5d5f-4e7a-9c4d-ec412a5ec7de - dscp : 0 - external_ids : {opendaylight-queue-id="queue://740a3809-5bef-4ad4-98d6-2ba81132bd06"} - other_config : {dscp="0", max-rate="3000000"} - - mininet@mininet-vm:~$ sudo ovs-vsctl show - 0b8ed0aa-67ac-4405-af13-70249a7e8a96 - Manager "tcp:192.168.1.200:6640" - is_connected: true - Bridge "ovsbr0" - Port "ovsbr0" - Interface "ovsbr0" - type: internal - ovs_version: "2.4.0" - -RETRIEVE UNI -~~~~~~~~~~~~ - -GET -`http://:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/ :8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/>`__ - -Response : 200 + +--rw mef-services + +--rw mef-service* [svc-id] + +--rw evc + | +--rw unis + | | +--rw uni* [uni-id] + | | +--rw evc-uni-ce-vlans + | | | +--rw evc-uni-ce-vlan* [vid] + | | | +--rw vid -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ce-vlans/ce-vlan/vid + | | +--rw ingress-bwp-flows-per-cos! + | | | +--rw coupling-enabled? boolean + | | | +--rw bwp-flow-per-cos* [cos-name] + | | | +--rw cos-name -> /mef-global:mef-global/profiles/cos-names/cos-name/name + | | | +--rw bw-profile -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ingress-envelopes/envelope/env-id + | | +--rw egress-bwp-flows-per-eec! + | | | +--rw coupling-enabled? boolean + | | | +--rw bwp-flow-per-eec* [eec-name] + | | | +--rw eec-name -> /mef-global:mef-global/profiles/eec-names/eec-name/name + | | | +--rw bw-profile -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/egress-envelopes/envelope/env-id + | | +--rw status + | | | +--ro oper-state-enabled? boolean + | | | +--ro available-status? mef-types:svc-endpoint-availability-type + | | +--rw uni-id -> /mef-interfaces:mef-interfaces/unis/uni/uni-id + | | +--rw role mef-types:evc-uni-role-type + | | +--rw admin-state-enabled? boolean + | | +--rw color-id? mef-types:cos-color-identifier-type + | | +--rw data-svc-frm-cos? -> /mef-global:mef-global/profiles/cos/cos-profile/id + | | +--rw l2cp-svc-frm-cos? -> /mef-global:mef-global/profiles/l2cp-cos/l2cp-profile/id + | | +--rw soam-svc-frm-cos? -> /mef-global:mef-global/profiles/cos/cos-profile/id + | | +--rw data-svc-frm-eec? -> /mef-global:mef-global/profiles/eec/eec-profile/id + | | +--rw l2cp-svc-frm-eec? -> /mef-global:mef-global/profiles/l2cp-eec/l2cp-profile/id + | | +--rw soam-svc-frm-eec? -> /mef-global:mef-global/profiles/eec/eec-profile/id + | | +--rw ingress-bw-profile-per-evc? -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/ingress-envelopes/envelope/env-id + | | +--rw egress-bw-profile-per-evc? -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/egress-envelopes/envelope/env-id + | | +--rw src-mac-addr-limit-enabled? boolean + | | +--rw src-mac-addr-limit? uint32 + | | +--rw src-mac-addr-limit-interval? yang:timeticks + | | +--rw test-meg-enabled? boolean + | | +--rw test-meg? mef-types:identifier45 + | | +--rw subscriber-meg-mip-enabled? boolean + | | +--rw subscriber-meg-mip? mef-types:identifier45 + | +--rw status + | | +--ro oper-state-enabled? boolean + | | +--ro available-status? mef-types:virt-cx-availability-type + | +--rw sls-inclusions-by-cos + | | +--rw sls-inclusion-by-cos* [cos-name] + | | +--rw cos-name -> /mef-global:mef-global/profiles/cos-names/cos-name/name + | +--rw sls-uni-inclusions! + | | +--rw sls-uni-inclusion-set* [pm-type pm-id uni-id1 uni-id2] + | | +--rw pm-type -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type + | | +--rw pm-id -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj[mef-global:pm-type = current()/../pm-type]/pm-id + | | +--rw uni-id1 -> ../../../unis/uni/uni-id + | | +--rw uni-id2 -> ../../../unis/uni/uni-id + | +--rw sls-uni-exclusions! + | | +--rw sls-uni-exclusion-set* [pm-type pm-id uni-id1 uni-id2] + | | +--rw pm-type -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type + | | +--rw pm-id -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj[mef-global:pm-type = current()/../pm-type]/pm-id + | | +--rw uni-id1 -> ../../../unis/uni/uni-id + | | +--rw uni-id2 -> ../../../unis/uni/uni-id + | +--rw evc-id mef-types:evc-id-type + | +--ro evc-status? mef-types:evc-status-type + | +--rw evc-type mef-types:evc-type + | +--rw admin-state-enabled? boolean + | +--rw elastic-enabled? boolean + | +--rw elastic-service? mef-types:identifier45 + | +--rw max-uni-count? uint32 + | +--rw preserve-ce-vlan-id? boolean + | +--rw cos-preserve-ce-vlan-id? boolean + | +--rw evc-performance-sls? -> /mef-global:mef-global/slss/sls/sls-id + | +--rw unicast-svc-frm-delivery? mef-types:data-svc-frame-delivery-type + | +--rw multicast-svc-frm-delivery? mef-types:data-svc-frame-delivery-type + | +--rw broadcast-svc-frm-delivery? mef-types:data-svc-frame-delivery-type + | +--rw evc-meg-id? mef-types:identifier45 + | +--rw max-svc-frame-size? mef-types:max-svc-frame-size-type + +--rw svc-id mef-types:retail-svc-id-type + +--rw sp-id? -> /mef-global:mef-global/svc-providers/svc-provider/sp-id + +--rw svc-type? mef-types:mef-service-type + +--rw user-label? mef-types:identifier45 + +--rw svc-entity? mef-types:service-entity-type + +module: mef-global :: - { - "node": [ - { - "node-id": "uni-id", - "cl-unimgr-mef:speed": { - "speed-1G": [null] - }, - "cl-unimgr-mef:mac-layer": "IEEE 802.3-2005", - "cl-unimgr-mef:physical-medium": "1000BASE-T", - "cl-unimgr-mef:mode": "syncEnabled", - "cl-unimgr-mef:type": "UNITYPE", - "cl-unimgr-mef:mtu-size": "1600", - "cl-unimgr-mef:mac-address": "00:22:22:22:22:22", - "cl-unimgr-mef:ip-address": "10.36.0.22" - } - ] - } - -Output Options + +--rw mef-global + +--rw svc-providers! + | +--rw svc-provider* [sp-id] + | +--rw sp-id mef-types:svc-provider-type + +--rw cens! + | +--rw cen* [cen-id] + | +--rw cen-id mef-types:cen-type + | +--rw sp-id? -> /mef-global/svc-providers/svc-provider/sp-id + +--rw slss! + | +--rw sls* [sls-id] + | +--rw perf-objs + | | +--rw pm-time-interval uint64 + | | +--rw pm-time-interval-increment uint64 + | | +--rw unavail-flr-threshold-pp mef-types:simple-percent + | | +--rw consecutive-small-time-intervals uint64 + | | +--rw perf-obj* [pm-type pm-id] + | | +--rw pm-type mef-types:performance-metric-type + | | +--rw pm-id mef-types:identifier45 + | | +--rw cos-name -> /mef-global/profiles/cos-names/cos-name/name + | | +--rw fd-pp mef-types:simple-percent + | | +--rw fd-range-pp mef-types:simple-percent + | | +--rw fd-perf-obj uint64 + | | +--rw fd-range-perf-obj uint64 + | | +--rw fd-mean-perf-obj uint64 + | | +--rw ifdv-pp mef-types:simple-percent + | | +--rw ifdv-pair-interval mef-types:simple-percent + | | +--rw ifdv-perf-obj uint64 + | | +--rw flr-perf-obj uint64 + | | +--rw avail-pp mef-types:simple-percent + | | +--rw hli-perf-obj uint64 + | | +--rw chli-consecutive-small-time-intervals uint64 + | | +--rw chli-perf-obj uint64 + | | +--rw min-uni-pairs-avail uint64 + | | +--rw gp-avail-pp mef-types:simple-percent + | +--rw sls-id mef-types:cen-type + | +--rw sp-id? -> /mef-global/svc-providers/svc-provider/sp-id + +--rw subscribers! + | +--rw subscriber* [sub-id] + | +--rw sub-id mef-types:subscriber-type + | +--rw sp-id? -> /mef-global/svc-providers/svc-provider/sp-id + | +--rw cen-id? -> /mef-global/cens/cen/cen-id + +--rw profiles! + +--rw cos-names + | +--rw cos-name* [name] + | +--rw name mef-types:identifier45 + +--rw eec-names + | +--rw eec-name* [name] + | +--rw name mef-types:identifier45 + +--rw ingress-bwp-flows + | +--rw bwp-flow* [bw-profile] + | +--rw bw-profile mef-types:identifier45 + | +--rw user-label? mef-types:identifier45 + | +--rw cir? mef-types:bwp-cir-type + | +--rw cir-max? mef-types:bwp-cir-type + | +--rw cbs? mef-types:bwp-cbs-type + | +--rw eir? mef-types:bwp-eir-type + | +--rw eir-max? mef-types:bwp-eir-type + | +--rw ebs? mef-types:bwp-ebs-type + | +--rw coupling-enabled? boolean + | +--rw color-mode? mef-types:bwp-color-mode-type + | +--rw coupling-flag? mef-types:bwp-coupling-flag-type + +--rw egress-bwp-flows + | +--rw bwp-flow* [bw-profile] + | +--rw bw-profile mef-types:identifier45 + | +--rw user-label? mef-types:identifier45 + | +--rw cir? mef-types:bwp-cir-type + | +--rw cir-max? mef-types:bwp-cir-type + | +--rw cbs? mef-types:bwp-cbs-type + | +--rw eir? mef-types:bwp-eir-type + | +--rw eir-max? mef-types:bwp-eir-type + | +--rw ebs? mef-types:bwp-ebs-type + | +--rw coupling-enabled? boolean + | +--rw color-mode? mef-types:bwp-color-mode-type + | +--rw coupling-flag? mef-types:bwp-coupling-flag-type + +--rw l2cp-cos + | +--rw l2cp-profile* [id] + | +--rw l2cps + | | +--rw l2cp* [dest-mac-addr peering-proto-name] + | | +--rw dest-mac-addr yang:mac-address + | | +--rw peering-proto-name mef-types:identifier45 + | | +--rw protocol? mef-types:l2cp-peering-protocol-type + | | +--rw protocol-id? yang:hex-string + | | +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name + | | +--rw handling? mef-types:l2cp-handling-type + | | +--rw subtype* yang:hex-string + | +--rw id mef-types:identifier45 + | +--rw user-label? mef-types:identifier45 + +--rw l2cp-eec + | +--rw l2cp-profile* [id] + | +--rw l2cps + | | +--rw l2cp* [dest-mac-addr peering-proto-name] + | | +--rw dest-mac-addr yang:mac-address + | | +--rw peering-proto-name mef-types:identifier45 + | | +--rw protocol? mef-types:l2cp-peering-protocol-type + | | +--rw protocol-id? yang:hex-string + | | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name + | | +--rw handling? mef-types:l2cp-handling-type + | | +--rw subtype* yang:hex-string + | +--rw id mef-types:identifier45 + | +--rw user-label? mef-types:identifier45 + +--rw l2cp-peering + | +--rw l2cp-profile* [id] + | +--rw l2cps + | | +--rw l2cp* [dest-mac-addr peering-proto-name] + | | +--rw dest-mac-addr yang:mac-address + | | +--rw peering-proto-name mef-types:identifier45 + | | +--rw protocol? mef-types:l2cp-peering-protocol-type + | | +--rw protocol-id? yang:hex-string + | | +--rw subtype* yang:hex-string + | +--rw id mef-types:identifier45 + | +--rw user-label? mef-types:identifier45 + +--rw elmi + | +--rw elmi-profile* [id] + | +--rw id mef-types:identifier45 + | +--rw user-label? mef-types:identifier45 + | +--rw polling-counter? mef-types:elmi-polling-counter-type + | +--rw status-error-threshold? mef-types:elmi-status-error-threshold-type + | +--rw polling-timer? mef-types:elmi-polling-timer-type + | +--rw polling-verification-timer? mef-types:elmi-polling-verification-timer-type + +--rw eec + | +--rw eec-profile* [id] + | +--rw id mef-types:identifier45 + | +--rw (eec-id)? + | +--:(pcp) + | | +--rw eec-pcp! + | | +--rw default-pcp-eec-name? -> /mef-global/profiles/eec-names/eec-name/name + | | +--rw default-pcp-color? mef-types:cos-color-type + | | +--rw pcp* [pcp-value] + | | +--rw pcp-value mef-types:ieee8021p-priority-type + | | +--rw discard-value? boolean + | | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name + | | +--rw color? mef-types:cos-color-type + | +--:(dscp) + | +--rw eec-dscp! + | +--rw default-ipv4-eec-name? -> /mef-global/profiles/eec-names/eec-name/name + | +--rw default-ipv4-color? mef-types:cos-color-type + | +--rw default-ipv6-eec-name? -> /mef-global/profiles/eec-names/eec-name/name + | +--rw default-ipv6-color? mef-types:cos-color-type + | +--rw ipv4-dscp* [dscp-value] + | | +--rw dscp-value inet:dscp + | | +--rw discard-value? boolean + | | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name + | | +--rw color? mef-types:cos-color-type + | +--rw ipv6-dscp* [dscp-value] + | +--rw dscp-value inet:dscp + | +--rw discard-value? boolean + | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name + | +--rw color? mef-types:cos-color-type + +--rw cos + +--rw cos-profile* [id] + +--rw id mef-types:identifier45 + +--rw (cos-id)? + +--:(evc) + | +--rw cos-evc! + | +--rw default-evc-cos-name? -> /mef-global/profiles/cos-names/cos-name/name + | +--rw default-evc-color? mef-types:cos-color-type + +--:(pcp) + | +--rw cos-pcp! + | +--rw default-pcp-cos-name? -> /mef-global/profiles/cos-names/cos-name/name + | +--rw default-pcp-color? mef-types:cos-color-type + | +--rw pcp* [pcp-value] + | +--rw pcp-value mef-types:ieee8021p-priority-type + | +--rw discard-value? boolean + | +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name + | +--rw color? mef-types:cos-color-type + +--:(dscp) + +--rw cos-dscp! + +--rw default-ipv4-cos-name? -> /mef-global/profiles/cos-names/cos-name/name + +--rw default-ipv4-color? mef-types:cos-color-type + +--rw default-ipv6-cos-name? -> /mef-global/profiles/cos-names/cos-name/name + +--rw default-ipv6-color? mef-types:cos-color-type + +--rw ipv4-dscp* [dscp-value] + | +--rw dscp-value inet:dscp + | +--rw discard-value? boolean + | +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name + | +--rw color? mef-types:cos-color-type + +--rw ipv6-dscp* [dscp-value] + +--rw dscp-value inet:dscp + +--rw discard-value? boolean + +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name + +--rw color? mef-types:cos-color-type + +Presto API Tree +--------------- + +module: onf-core-network-module :: - "cl-unimgr-mef:speed" - "speed-10M" - "speed-100M" - "speed-1G" - "speed-10G" - "cl-unimgr-mef::mac-layer" - "IEEE 802.3-2005" - "cl-unimgr-mef:physical-medium" - "10BASE-T" - "100BASE-T" - "1000BASE-T" - "10GBASE-T" - "cl-unimgr-mef::mode" - "syncEnabled" - "syncDisabled" - "cl-unimgr-mef::type" - "UNITYPE" - -UPDATE UNI -~~~~~~~~~~ + +--rw forwarding-constructs + +--rw forwarding-construct* [uuid] + +--rw uuid string + +--rw layerProtocolName? onf-cnt:LayerProtocolName + +--rw lowerLevelFc* -> /forwarding-constructs/forwarding-construct/uuid + +--rw fcRoute* [uuid] + | +--rw uuid string + | +--rw fc* -> /forwarding-constructs/forwarding-construct/uuid + +--rw fcPort* [topology node tp] + | +--rw topology nt:topology-ref + | +--rw node nt:node-ref + | +--rw tp nt:tp-ref + | +--rw role? onf-cnt:PortRole + | +--rw fcPortDirection? onf-cnt:PortDirection + +--rw fcSpec + | +--rw uuid? string + | +--rw fcPortSpec* [uuid] + | | +--rw uuid string + | | +--rw ingressFcPortSet* [topology node tp] + | | | +--rw topology nt:topology-ref + | | | +--rw node nt:node-ref + | | | +--rw tp nt:tp-ref + | | +--rw egressFcPortSet* [topology node tp] + | | | +--rw topology nt:topology-ref + | | | +--rw node nt:node-ref + | | | +--rw tp nt:tp-ref + | | +--rw role? string + | +--rw nrp:nrp-ce-fcspec-attrs + | +--rw nrp:connectionType? nrp-types:NRP_ConnectionType + | +--rw nrp:unicastFrameDelivery? nrp-types:NRP_ServiceFrameDelivery + | +--rw nrp:multicastFrameDelivery? nrp-types:NRP_ServiceFrameDelivery + | +--rw nrp:broadcastFrameDelivery? nrp-types:NRP_ServiceFrameDelivery + | +--rw nrp:vcMaxServiceFrame? nrp-types:NRP_PositiveInteger + | +--rw nrp:vcId? nrp-types:NRP_PositiveInteger + +--rw forwardingDirection? onf-cnt:ForwardingDirection + +augment /nt:network-topology/nt:topology/nt:node/nt:termination-point: :: - PUT http://:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/ - -.. note:: - - uni-id is determined by and supplied by the caller both in the path - and the body of the rest message - -Request Body - -:: - - { - "network-topology:node": [ - { - "node-id": "uni-id", - "speed": { - "speed-1G": 1 - }, - "uni:mac-layer": "IEEE 802.3-2005", - "uni:physical-medium": "100BASE-T", - "uni:mode": "syncEnabled" - "uni:type": "UNITYPE", - "uni:mtu-size": 1600, - "uni:mac-address": "68:5b:35:bb:f8:3e", - "uni:ip-address": "192.168.2.11", - } - ] - } - -Response on success: 200 - -Input Options - -:: - - "speed" - "speed-10M" - "speed-100M" - "speed-1G" - "speed-10G" - "uni:mac-layer" - "IEEE 802.3-2005" - uni:physical-medium - "10BASE-T" - "100BASE-T" - "1000BASE-T" - "10GBASE-T" - "uni:mode" - "syncEnabled" - "syncDisabled" - "uni:type" - "UNITYPE" - "uni:mtu-size" - 1600 reccomended - -DELETE UNI -~~~~~~~~~~ - -:: - - DELETE http://:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/ - -Response on success: 200 - -CREATE EVC -~~~~~~~~~~ - -:: - - PUT http://:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/ - -.. note:: - - evc-id is determined by and supplied by the caller both in the path - and the body of the rest message - -Request Body - -:: - - { - "link": [ - { - "link-id": "evc-1", - "source": { - "source-node": "/network-topology/topology/node/uni-1" - }, - "destination": { - "dest-node": "/network-topology/topology/node/uni-2" - }, - "cl-unimgr-mef:uni-source": [ - { - "order": "0", - "ip-address": "192.168.2.11" - } - ], - "cl-unimgr-mef:uni-dest": [ - { - "order": "0", - "ip-address": "192.168.2.10" - } - ], - "cl-unimgr-mef:cos-id": "gold", - "cl-unimgr-mef:ingress-bw": { - "speed-10G": {} - }, - "cl-unimgr-mef:egress-bw": { - "speed-10G": {} - } - } - ] - } - -Response on success: 200 - -Input Optionss - -:: - - ["source"]["source-node"] - Id of 1st UNI to assocate EVC with - ["cl-unimgr-mef:uni-source"][0]["ip-address"] - IP address of 1st UNI to associate EVC with - ["destination"]["dest-node"] - Id of 2nd UNI to assocate EVC with - ["cl-unimgr-mef:uni-dest"][0]["ip-address"] - IP address of 2nd UNI to associate EVC with - "cl-unimgr-mef:cos-id" - class of service id to associate with the EVC - "cl-unimgr-mef:ingress-bw" - "cl-unimgr-mef:egress-bw" - "speed-10M" - "speed-100M" - "speed-1G" - "speed-10G" - -On OVS, the QoS, the Queue were updated, and two ports were added: - -:: - - mininet@mininet-vm:~$ sudo ovs-vsctl list QoS - _uuid : 341c6e9d-ecb4-44ff-a21c-db644b466f4c - external_ids : {opendaylight-qos-id="qos://18db2a79-5655-4a94-afac-94015245e3f6"} - other_config : {dscp="0", max-rate="3000000"} - queues : {} - type : linux-htb - - mininet@mininet-vm:~$ sudo ovs-vsctl list Queue - _uuid : 8a0e1fc1-5d5f-4e7a-9c4d-ec412a5ec7de - dscp : 0 - external_ids : {opendaylight-queue-id="queue://740a3809-5bef-4ad4-98d6-2ba81132bd06"} - other_config : {dscp="0", max-rate="3000000"} - - mininet@mininet-vm:~$ sudo ovs-vsctl show - 0b8ed0aa-67ac-4405-af13-70249a7e8a96 - Manager "tcp:192.168.1.200:6640" - is_connected: true - Bridge "ovsbr0" - Port "ovsbr0" - Interface "ovsbr0" - type: internal - Port "eth1" - Interface "eth1" - Port "gre1" - Interface "gre1" - type: gre - options: {remote_ip="192.168.1.233"} - ovs_version: "2.4.0" - -RETRIEVE EVC -~~~~~~~~~~~~ - -:: - - GET http://:8181/restconf/operational/network-topology:network-topology/topology/unimgr:evc/link/ - -Response on success: 200 - -:: - - { - "link": [ - { - "link-id": "evc-5", - "source": { - "source-node": "/network-topology/topology/node/uni-9" - }, - "destination": { - "dest-node": "/network-topology/topology/node/uni-10" - }, - "cl-unimgr-mef:uni-dest": [ - { - "order": 0, - "uni": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='unimgr:uni']/network-topology:node[network-topology:node-id='uni-10']", - "ip-address": "10.0.0.22" - } - ], - "cl-unimgr-mef:ingress-bw": { - "speed-1G": [null] - }, - "cl-unimgr-mef:cos-id": "new1", - "cl-unimgr-mef:uni-source": [ - { - "order": 0, - "uni": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='unimgr:uni']/network-topology:node[network-topology:node-id='uni-9']", - "ip-address": "10.0.0.21" - } - ], - "cl-unimgr-mef:egress-bw": { - "speed-1G": [null] - } - } - ] - } - -Output Options - -:: - - ["source"]["source-node"] - ["cl-unimgr-mef:uni-source"][0]["uni"] - Id of 1st UNI assocated with EVC - ["cl-unimgr-mef:uni-source"][0]["ip-address"] - IP address of 1st UNI assocated with EVC - ["destination"]["dest-node"] - ["cl-unimgr-mef:uni-dest"][0]["uni"] - Id of 2nd UNI assocated with EVC - ["cl-unimgr-mef:uni-dest"][0]["ip-address"] - IP address of 2nd UNI assocated with EVC - "cl-unimgr-mef:cos-id" - class of service id associated with the EVC - "cl-unimgr-mef:ingress-bw" - "cl-unimgr-mef:egress-bw" - "speed-10M" - "speed-100M" - "speed-1G" - "speed-10G" - -UPDATE EVC -~~~~~~~~~~ - -:: - - PUT http://:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/ - -.. note:: - - evc-id is determined by and supplied by the caller both in the path - and the body of the rest message - -Request Body - -:: - - { - "link": [ - { - "link-id": "evc-1", - "source": { - "source-node": "/network-topology/topology/node/uni-1" - }, - "destination": { - "dest-node": "/network-topology/topology/node/uni-2" - }, - "cl-unimgr-mef:uni-source": [ - { - "order": "0", - "ip-address": "192.168.2.11" - } - ], - "cl-unimgr-mef:uni-dest": [ - { - "order": "0", - "ip-address": "192.168.2.10" - } - ], - "cl-unimgr-mef:cos-id": "gold", - "cl-unimgr-mef:ingress-bw": { - "speed-10G": {} - }, - "cl-unimgr-mef:egress-bw": { - "speed-10G": {} - } - } - ] - } - -Response on success: 200 - -Input Optionss - -:: - - ["source"]["source-node"] - Id of 1st UNI to assocate EVC with - ["cl-unimgr-mef:uni-source"][0]["ip-address"] - IP address of 1st UNI to associate EVC with - ["destination"]["dest-node"] - Id of 2nd UNI to assocate EVC with - ["cl-unimgr-mef:uni-dest"][0]["ip-address"] - IP address of 2nd UNI to associate EVC with - "cl-unimgr-mef:cos-id" - class of service id to associate with the EVC - "cl-unimgr-mef:ingress-bw" - "cl-unimgr-mef:egress-bw" - "speed-10M" - "speed-100M" - "speed-1G" - "speed-10G" - -DELETE EVC -~~~~~~~~~~ - -:: - - DELETE http://host-ip:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/evc-id - -Response on success: 200 - + +--rw ltp-attrs + +--rw lpList* [uuid] + | +--rw uuid string + | +--rw layerProtocolName? onf-cnt:LayerProtocolName + | +--rw lpSpec + | | +--rw adapterSpec + | | | +--rw nrp:nrp-conn-adapt-spec-attrs + | | | | +--rw nrp:sourceMacAddressLimit + | | | | | +--rw nrp:enabled? boolean + | | | | | +--rw nrp:limit? NRP_NaturalNumber + | | | | | +--rw nrp:timeInterval? NRP_NaturalNumber + | | | | +--rw nrp:CeExternalInterface + | | | | | +--rw nrp:physicalLayer? nrp-types:NRP_PhysicalLayer + | | | | | +--rw nrp:syncMode* [linkId] + | | | | | | +--rw nrp:linkId string + | | | | | | +--rw nrp:syncModeEnabled? boolean + | | | | | +--rw nrp:numberOfLinks? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:resiliency? nrp-types:NRP_InterfaceResiliency + | | | | | +--rw nrp:portConvsIdToAggLinkMap + | | | | | | +--rw nrp:conversationId? NRP_NaturalNumber + | | | | | | +--rw nrp:linkId? NRP_NaturalNumber + | | | | | +--rw nrp:maxFrameSize? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:linkOamEnabled? boolean + | | | | | +--rw nrp:tokenShareEnabled? boolean + | | | | | +--rw nrp:serviceProviderUniId? string + | | | | +--rw nrp:coloridentifier + | | | | | +--rw (identifier)? + | | | | | +--:(sap-color-id) + | | | | | | +--rw nrp:serviceAccessPointColorId + | | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | | | +--:(pcp-color-id) + | | | | | | +--rw nrp:pcpColorId + | | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag + | | | | | | +--rw nrp:pcpValue* nrp-types:NRP_NaturalNumber + | | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | | | +--:(dei-color-id) + | | | | | | +--rw nrp:deiColorId + | | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag + | | | | | | +--rw nrp:deiValue* nrp-types:NRP_NaturalNumber + | | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | | | +--:(desp-color-id) + | | | | | +--rw nrp:despColorId + | | | | | +--rw nrp:ipVersion? nrp-types:NRP_IpVersion + | | | | | +--rw nrp:dscpValue* nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | | +--rw nrp:ingressBwpFlow + | | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger + | | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode + | | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger + | | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:egressBwpFlow + | | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger + | | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode + | | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger + | | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:l2cpAddressSet? nrp-types:NRP_L2cpAddressSet + | | | | +--rw nrp:l2cpPeering* [linkId] + | | | | +--rw nrp:destinationMacAddress? string + | | | | +--rw nrp:protocolType? NRP_ProtocolFrameType + | | | | +--rw nrp:linkId string + | | | | +--rw nrp:protocolId? string + | | | +--rw nrp:nrp-ivc-endpoint-conn-adapt-spec-attrs + | | | | +--rw nrp:ivcEndPointId? string + | | | | +--rw nrp:testMegEnabled? boolean + | | | | +--rw nrp:ivcEndPointRole? nrp-types:NRP_EndPointRole + | | | | +--rw nrp:ivcEndPointMap* [vlanId] + | | | | | +--rw nrp:vlanId nrp-types:NRP_PositiveInteger + | | | | | +--rw (endpoint-map-form)? + | | | | | +--:(map-form-e) + | | | | | | +--rw nrp:enni-svid* [vid] + | | | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger + | | | | | +--:(map-form-t) + | | | | | | +--rw nrp:root-svid? nrp-types:NRP_PositiveInteger + | | | | | | +--rw nrp:leaf-svid? nrp-types:NRP_PositiveInteger + | | | | | +--:(map-form-v) + | | | | | | +--rw nrp:vuni-vid? nrp-types:NRP_PositiveInteger + | | | | | | +--rw nrp:enni-cevid* [vid] + | | | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger + | | | | | +--:(map-form-u) + | | | | | +--rw nrp:cvid* [vid] + | | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger + | | | | +--rw nrp:subscriberMegMipEnabled? boolean + | | | +--rw nrp:nrp-evc-endpoint-conn-adapt-spec-attrs + | | | +--rw nrp:sourceMacAddressLimit + | | | | +--rw nrp:enabled? boolean + | | | | +--rw nrp:limit? NRP_NaturalNumber + | | | | +--rw nrp:timeInterval? NRP_NaturalNumber + | | | +--rw nrp:CeExternalInterface + | | | | +--rw nrp:physicalLayer? nrp-types:NRP_PhysicalLayer + | | | | +--rw nrp:syncMode* [linkId] + | | | | | +--rw nrp:linkId string + | | | | | +--rw nrp:syncModeEnabled? boolean + | | | | +--rw nrp:numberOfLinks? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:resiliency? nrp-types:NRP_InterfaceResiliency + | | | | +--rw nrp:portConvsIdToAggLinkMap + | | | | | +--rw nrp:conversationId? NRP_NaturalNumber + | | | | | +--rw nrp:linkId? NRP_NaturalNumber + | | | | +--rw nrp:maxFrameSize? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:linkOamEnabled? boolean + | | | | +--rw nrp:tokenShareEnabled? boolean + | | | | +--rw nrp:serviceProviderUniId? string + | | | +--rw nrp:coloridentifier + | | | | +--rw (identifier)? + | | | | +--:(sap-color-id) + | | | | | +--rw nrp:serviceAccessPointColorId + | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | | +--:(pcp-color-id) + | | | | | +--rw nrp:pcpColorId + | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag + | | | | | +--rw nrp:pcpValue* nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | | +--:(dei-color-id) + | | | | | +--rw nrp:deiColorId + | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag + | | | | | +--rw nrp:deiValue* nrp-types:NRP_NaturalNumber + | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | | +--:(desp-color-id) + | | | | +--rw nrp:despColorId + | | | | +--rw nrp:ipVersion? nrp-types:NRP_IpVersion + | | | | +--rw nrp:dscpValue* nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:color? nrp-types:NRP_FrameColor + | | | +--rw nrp:ingressBwpFlow + | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger + | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode + | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger + | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:egressBwpFlow + | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger + | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode + | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger + | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:l2cpAddressSet? nrp-types:NRP_L2cpAddressSet + | | | +--rw nrp:l2cpPeering* [linkId] + | | | | +--rw nrp:destinationMacAddress? string + | | | | +--rw nrp:protocolType? NRP_ProtocolFrameType + | | | | +--rw nrp:linkId string + | | | | +--rw nrp:protocolId? string + | | | +--rw nrp:evcEndPointId? nrp-types:NRP_PositiveInteger + | | | +--rw nrp:testMegEnabled? boolean + | | | +--rw nrp:evcEndPointRole? nrp-types:NRP_EvcEndPointRole + | | | +--rw nrp:evcEndPointMap* [vid] + | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger + | | | +--rw nrp:subscriberMegMipEbabled? boolean + | | +--rw terminationSpec + | | | +--rw nrp:nrp-termination-spec-attrs + | | | | +--rw nrp:physicalLayer? nrp-types:NRP_PhysicalLayer + | | | | +--rw nrp:syncMode* [linkId] + | | | | | +--rw nrp:linkId string + | | | | | +--rw nrp:syncModeEnabled? boolean + | | | | +--rw nrp:numberOfLinks? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:resiliency? nrp-types:NRP_InterfaceResiliency + | | | | +--rw nrp:portConvsIdToAggLinkMap + | | | | | +--rw nrp:conversationId? NRP_NaturalNumber + | | | | | +--rw nrp:linkId? NRP_NaturalNumber + | | | | +--rw nrp:maxFrameSize? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:linkOamEnabled? boolean + | | | | +--rw nrp:tokenShareEnabled? boolean + | | | | +--rw nrp:serviceProviderUniId? string + | | | +--rw nrp:nrp-uni-termination-attrs + | | | +--rw nrp:defaultCeVlanId? nrp-types:NRP_PositiveInteger + | | | +--rw nrp:uniMegEnabled? boolean + | | | +--rw nrp:elmiEnabled? boolean + | | | +--rw nrp:serviceprovideruniprofile? string + | | | +--rw nrp:operatoruniprofile? string + | | | +--rw nrp:ingressBwpUni + | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger + | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber + | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode + | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger + | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:egressBwpUni + | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger + | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber + | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode + | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger + | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber + | | +--rw adapterPropertySpecList* [uuid] + | | | +--rw uuid string + | | +--rw providerViewSpec + | | +--rw serverSpecList* [uuid] + | | +--rw uuid string + | +--rw configuredClientCapacity? string + | +--rw lpDirection? onf-cnt:TerminationDirection + | +--rw terminationState? string + +--rw ltpSpec + +--rw ltpDirection? onf-cnt:TerminationDirection