-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 <https://www.mef.net/Assets/Technical_Specifications/PDF/MEF_55.pdf>`_.
-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://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
-
-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://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
+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://<host-ip>:8181/restconf/config/<PATH>
+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://<host-ip>:8181/restconf/operational/<PATH>
+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://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
+* 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://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/<uni-id> <http://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>>`__
-
-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://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
-
-.. 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://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
-
-Response on success: 200
-
-CREATE EVC
-~~~~~~~~~~
-
-::
-
- PUT http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
-
-.. 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://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
-
-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://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
-
-.. 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