fix Maven Archetype doc
[docs.git] / docs / developer-guide / uni-manager-plug-in-developer-guide.rst
1 .. _unimgr-dev-guide:
2
3 User Network Interface Manager Plug-in (Unimgr) Developer Guide
4 ===============================================================
5
6 Overview
7 --------
8
9 The User Network Interface (UNI) Manager project within OpenDaylight provides
10 data models and APIs that enable software applications and service
11 orchestrators to configure and provision connectivity services; in particular,
12 Carrier Ethernet services as defined by MEF Forum, in physical and virtual
13 network elements.
14
15 Unimgr Architecture
16 -------------------
17
18 Unimgr provides support for both service orchestration, via the Legato API, and
19 network resource provisioning, via the Presto API.  These APIs, and the
20 interfaces they provide, are defined by YANG models developed within MEF in
21 collaboration with ONF and IETF. An application/user can interact with Unimgr
22 at either layer. Presto and Legato APIs are for LSO Architecture reference points
23 defined in `MEF 55 specification <https://www.mef.net/Assets/Technical_Specifications/PDF/MEF_55.pdf>`_.
24
25 Presto layer
26 ````````````
27 .. figure:: ./images/unimgr/architecture.png
28    :scale: 65
29    :alt: Presto layer  Architecture
30
31 In current version of Unimgr the recent version of Presto NRP is supported.
32 This model is based on Transport API (TAPI) from ONF. This API allows for
33 management of connectivity services and exposes abstract topology of the
34 managed infrastracture. By its nature Presto NRP write and update operations
35 are defined as set of RPC calls. All the reads operation can be either specific
36 RPCs or via RESTCONF data tree.
37
38 Presto layer architecture is depicted in figure above. There are two
39 distinctive parts of Presto NRP business logic Activation Service and
40 Activation Driver. Activation Service part of the framework is to encapsulate
41 the common logic whereas Activation Driver is a way to encapsulate business
42 logic to transform Presto Request into a given underlying technology. This way
43 we are able to handle multi-vendor infrastructures and address various use
44 cases as vendors specific code is encapsulated in drivers.
45
46 Activation Service
47 ..................
48
49 Activation service is responsible for handling the connectivity request. In
50 case of service activation following steps are performed:
51
52 1. Validation of a request (e.g. if all endpoints exists)
53
54 2. Decomposition of a request into number of drivers sub-requests
55
56 3. Activation of the request for selected drivers
57
58 4. Update of the data model and creating ``ConnectivityService`` and ``Connection`` objects for the request
59
60 Step 1. Implements only minimal functionality.
61
62 Step 2. Allows for multi-vendor configuration as decomposition mechanisms
63 defines all drivers required to satisfy given connectivity request. Currently
64 only p2p connectivity services are supported in the decomposition mechanism.
65
66 Both validation and decomposition mechanisms are plug-able thus users can
67 support more sophisticated scenarios.
68
69
70 Activation Driver
71 .................
72
73 .. figure:: ./images/unimgr/drivers.png
74    :scale: 90
75    :alt: Presto NRP topology and drivers
76
77 Activation Driver has two main responsibilities:
78
79 * to handle connectvitiy service requests
80
81 * to contribute to Presto Topology with abstract nodes driver can handle
82
83 In figure above example topology and drivers are shown. As you can see it is up
84 to driver how to model infrastructure it manages. Thus, driver A has decided to
85 model all devices as single virtual node, whereas driver C is exposing every
86 single device as a node.
87
88 The connectivity service is defined between ``ServiceInterfacePoint``  (SIP)
89 which are mapped to ``NodeEdgePoint`` (NEP). A SIP can have UNI, ENNI or INNI
90 role. Assigning a SIP to NEP can be done automatically by driver of with the
91 use of Unimgr extension API. It is assumed that driver can connect eny number
92 of SIPs related to NEPs for every ``Node`` it exposes.
93
94 There is a contract for a given Karaf bundle to be recognized as a driver. The
95 following must be fulfiled:
96
97 * A driver have to expose an OSGI service that implements
98   ``org.opendaylight.unimgr.mef.nrp.api.ActivationDriverBuilder``
99
100 * Implement a component that is responsible for writing to topology (in general
101   the requirement is to add at least a single node to topology with id
102   ``org.opendaylight.unimgr.mef.nrp.api.TapiConstants#PRESTO_SYSTEM_TOPO``
103
104 There are three drivers maintained as part of Unimgr project:
105
106 :template-driver: Which is intended as a template for real drivers development.
107     It is not connected to infrastructure.
108 :ovs-driver: Which is a driver for OpenFlow infrasturcture.
109 :cisco-xr-driver: A netconf driver for Cisco XR devices for MPLS inter-connectivity
110
111 Key APIs and Interfaces
112 -----------------------
113
114 Legato YANG models:
115 https://git.opendaylight.org/gerrit/gitweb?p=unimgr.git;a=tree;f=legato-api/src/main/yang;hb=refs/heads/stable/nitrogen
116
117 Presto YANG models:
118 https://git.opendaylight.org/gerrit/gitweb?p=unimgr.git;a=tree;f=presto-api/src/main/yang;hb=refs/heads/stable/nitrogen
119
120 Legato API Tree
121 ---------------
122
123 module: mef-services
124 ::
125   +--rw mef-services
126      +--rw mef-service* [svc-id]
127         +--rw evc
128         |  +--rw unis
129         |  |  +--rw uni* [uni-id]
130         |  |     +--rw evc-uni-ce-vlans
131         |  |     |  +--rw evc-uni-ce-vlan* [vid]
132         |  |     |     +--rw vid    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ce-vlans/ce-vlan/vid
133         |  |     +--rw ingress-bwp-flows-per-cos!
134         |  |     |  +--rw coupling-enabled?   boolean
135         |  |     |  +--rw bwp-flow-per-cos* [cos-name]
136         |  |     |     +--rw cos-name      -> /mef-global:mef-global/profiles/cos-names/cos-name/name
137         |  |     |     +--rw bw-profile    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ingress-envelopes/envelope/env-id
138         |  |     +--rw egress-bwp-flows-per-eec!
139         |  |     |  +--rw coupling-enabled?   boolean
140         |  |     |  +--rw bwp-flow-per-eec* [eec-name]
141         |  |     |     +--rw eec-name      -> /mef-global:mef-global/profiles/eec-names/eec-name/name
142         |  |     |     +--rw bw-profile    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/egress-envelopes/envelope/env-id
143         |  |     +--rw status
144         |  |     |  +--ro oper-state-enabled?   boolean
145         |  |     |  +--ro available-status?     mef-types:svc-endpoint-availability-type
146         |  |     +--rw uni-id                         -> /mef-interfaces:mef-interfaces/unis/uni/uni-id
147         |  |     +--rw role                           mef-types:evc-uni-role-type
148         |  |     +--rw admin-state-enabled?           boolean
149         |  |     +--rw color-id?                      mef-types:cos-color-identifier-type
150         |  |     +--rw data-svc-frm-cos?              -> /mef-global:mef-global/profiles/cos/cos-profile/id
151         |  |     +--rw l2cp-svc-frm-cos?              -> /mef-global:mef-global/profiles/l2cp-cos/l2cp-profile/id
152         |  |     +--rw soam-svc-frm-cos?              -> /mef-global:mef-global/profiles/cos/cos-profile/id
153         |  |     +--rw data-svc-frm-eec?              -> /mef-global:mef-global/profiles/eec/eec-profile/id
154         |  |     +--rw l2cp-svc-frm-eec?              -> /mef-global:mef-global/profiles/l2cp-eec/l2cp-profile/id
155         |  |     +--rw soam-svc-frm-eec?              -> /mef-global:mef-global/profiles/eec/eec-profile/id
156         |  |     +--rw ingress-bw-profile-per-evc?    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/ingress-envelopes/envelope/env-id
157         |  |     +--rw egress-bw-profile-per-evc?     -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/egress-envelopes/envelope/env-id
158         |  |     +--rw src-mac-addr-limit-enabled?    boolean
159         |  |     +--rw src-mac-addr-limit?            uint32
160         |  |     +--rw src-mac-addr-limit-interval?   yang:timeticks
161         |  |     +--rw test-meg-enabled?              boolean
162         |  |     +--rw test-meg?                      mef-types:identifier45
163         |  |     +--rw subscriber-meg-mip-enabled?    boolean
164         |  |     +--rw subscriber-meg-mip?            mef-types:identifier45
165         |  +--rw status
166         |  |  +--ro oper-state-enabled?   boolean
167         |  |  +--ro available-status?     mef-types:virt-cx-availability-type
168         |  +--rw sls-inclusions-by-cos
169         |  |  +--rw sls-inclusion-by-cos* [cos-name]
170         |  |     +--rw cos-name    -> /mef-global:mef-global/profiles/cos-names/cos-name/name
171         |  +--rw sls-uni-inclusions!
172         |  |  +--rw sls-uni-inclusion-set* [pm-type pm-id uni-id1 uni-id2]
173         |  |     +--rw pm-type    -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type
174         |  |     +--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
175         |  |     +--rw uni-id1    -> ../../../unis/uni/uni-id
176         |  |     +--rw uni-id2    -> ../../../unis/uni/uni-id
177         |  +--rw sls-uni-exclusions!
178         |  |  +--rw sls-uni-exclusion-set* [pm-type pm-id uni-id1 uni-id2]
179         |  |     +--rw pm-type    -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type
180         |  |     +--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
181         |  |     +--rw uni-id1    -> ../../../unis/uni/uni-id
182         |  |     +--rw uni-id2    -> ../../../unis/uni/uni-id
183         |  +--rw evc-id                        mef-types:evc-id-type
184         |  +--ro evc-status?                   mef-types:evc-status-type
185         |  +--rw evc-type                      mef-types:evc-type
186         |  +--rw admin-state-enabled?          boolean
187         |  +--rw elastic-enabled?              boolean
188         |  +--rw elastic-service?              mef-types:identifier45
189         |  +--rw max-uni-count?                uint32
190         |  +--rw preserve-ce-vlan-id?          boolean
191         |  +--rw cos-preserve-ce-vlan-id?      boolean
192         |  +--rw evc-performance-sls?          -> /mef-global:mef-global/slss/sls/sls-id
193         |  +--rw unicast-svc-frm-delivery?     mef-types:data-svc-frame-delivery-type
194         |  +--rw multicast-svc-frm-delivery?   mef-types:data-svc-frame-delivery-type
195         |  +--rw broadcast-svc-frm-delivery?   mef-types:data-svc-frame-delivery-type
196         |  +--rw evc-meg-id?                   mef-types:identifier45
197         |  +--rw max-svc-frame-size?           mef-types:max-svc-frame-size-type
198         +--rw svc-id        mef-types:retail-svc-id-type
199         +--rw sp-id?        -> /mef-global:mef-global/svc-providers/svc-provider/sp-id
200         +--rw svc-type?     mef-types:mef-service-type
201         +--rw user-label?   mef-types:identifier45
202         +--rw svc-entity?   mef-types:service-entity-type
203
204 module: mef-global
205 ::
206   +--rw mef-global
207      +--rw svc-providers!
208      |  +--rw svc-provider* [sp-id]
209      |     +--rw sp-id    mef-types:svc-provider-type
210      +--rw cens!
211      |  +--rw cen* [cen-id]
212      |     +--rw cen-id    mef-types:cen-type
213      |     +--rw sp-id?    -> /mef-global/svc-providers/svc-provider/sp-id
214      +--rw slss!
215      |  +--rw sls* [sls-id]
216      |     +--rw perf-objs
217      |     |  +--rw pm-time-interval                    uint64
218      |     |  +--rw pm-time-interval-increment          uint64
219      |     |  +--rw unavail-flr-threshold-pp            mef-types:simple-percent
220      |     |  +--rw consecutive-small-time-intervals    uint64
221      |     |  +--rw perf-obj* [pm-type pm-id]
222      |     |     +--rw pm-type                                  mef-types:performance-metric-type
223      |     |     +--rw pm-id                                    mef-types:identifier45
224      |     |     +--rw cos-name                                 -> /mef-global/profiles/cos-names/cos-name/name
225      |     |     +--rw fd-pp                                    mef-types:simple-percent
226      |     |     +--rw fd-range-pp                              mef-types:simple-percent
227      |     |     +--rw fd-perf-obj                              uint64
228      |     |     +--rw fd-range-perf-obj                        uint64
229      |     |     +--rw fd-mean-perf-obj                         uint64
230      |     |     +--rw ifdv-pp                                  mef-types:simple-percent
231      |     |     +--rw ifdv-pair-interval                       mef-types:simple-percent
232      |     |     +--rw ifdv-perf-obj                            uint64
233      |     |     +--rw flr-perf-obj                             uint64
234      |     |     +--rw avail-pp                                 mef-types:simple-percent
235      |     |     +--rw hli-perf-obj                             uint64
236      |     |     +--rw chli-consecutive-small-time-intervals    uint64
237      |     |     +--rw chli-perf-obj                            uint64
238      |     |     +--rw min-uni-pairs-avail                      uint64
239      |     |     +--rw gp-avail-pp                              mef-types:simple-percent
240      |     +--rw sls-id       mef-types:cen-type
241      |     +--rw sp-id?       -> /mef-global/svc-providers/svc-provider/sp-id
242      +--rw subscribers!
243      |  +--rw subscriber* [sub-id]
244      |     +--rw sub-id    mef-types:subscriber-type
245      |     +--rw sp-id?    -> /mef-global/svc-providers/svc-provider/sp-id
246      |     +--rw cen-id?   -> /mef-global/cens/cen/cen-id
247      +--rw profiles!
248         +--rw cos-names
249         |  +--rw cos-name* [name]
250         |     +--rw name    mef-types:identifier45
251         +--rw eec-names
252         |  +--rw eec-name* [name]
253         |     +--rw name    mef-types:identifier45
254         +--rw ingress-bwp-flows
255         |  +--rw bwp-flow* [bw-profile]
256         |     +--rw bw-profile          mef-types:identifier45
257         |     +--rw user-label?         mef-types:identifier45
258         |     +--rw cir?                mef-types:bwp-cir-type
259         |     +--rw cir-max?            mef-types:bwp-cir-type
260         |     +--rw cbs?                mef-types:bwp-cbs-type
261         |     +--rw eir?                mef-types:bwp-eir-type
262         |     +--rw eir-max?            mef-types:bwp-eir-type
263         |     +--rw ebs?                mef-types:bwp-ebs-type
264         |     +--rw coupling-enabled?   boolean
265         |     +--rw color-mode?         mef-types:bwp-color-mode-type
266         |     +--rw coupling-flag?      mef-types:bwp-coupling-flag-type
267         +--rw egress-bwp-flows
268         |  +--rw bwp-flow* [bw-profile]
269         |     +--rw bw-profile          mef-types:identifier45
270         |     +--rw user-label?         mef-types:identifier45
271         |     +--rw cir?                mef-types:bwp-cir-type
272         |     +--rw cir-max?            mef-types:bwp-cir-type
273         |     +--rw cbs?                mef-types:bwp-cbs-type
274         |     +--rw eir?                mef-types:bwp-eir-type
275         |     +--rw eir-max?            mef-types:bwp-eir-type
276         |     +--rw ebs?                mef-types:bwp-ebs-type
277         |     +--rw coupling-enabled?   boolean
278         |     +--rw color-mode?         mef-types:bwp-color-mode-type
279         |     +--rw coupling-flag?      mef-types:bwp-coupling-flag-type
280         +--rw l2cp-cos
281         |  +--rw l2cp-profile* [id]
282         |     +--rw l2cps
283         |     |  +--rw l2cp* [dest-mac-addr peering-proto-name]
284         |     |     +--rw dest-mac-addr         yang:mac-address
285         |     |     +--rw peering-proto-name    mef-types:identifier45
286         |     |     +--rw protocol?             mef-types:l2cp-peering-protocol-type
287         |     |     +--rw protocol-id?          yang:hex-string
288         |     |     +--rw cos-name?             -> /mef-global/profiles/cos-names/cos-name/name
289         |     |     +--rw handling?             mef-types:l2cp-handling-type
290         |     |     +--rw subtype*              yang:hex-string
291         |     +--rw id            mef-types:identifier45
292         |     +--rw user-label?   mef-types:identifier45
293         +--rw l2cp-eec
294         |  +--rw l2cp-profile* [id]
295         |     +--rw l2cps
296         |     |  +--rw l2cp* [dest-mac-addr peering-proto-name]
297         |     |     +--rw dest-mac-addr         yang:mac-address
298         |     |     +--rw peering-proto-name    mef-types:identifier45
299         |     |     +--rw protocol?             mef-types:l2cp-peering-protocol-type
300         |     |     +--rw protocol-id?          yang:hex-string
301         |     |     +--rw eec-name?             -> /mef-global/profiles/eec-names/eec-name/name
302         |     |     +--rw handling?             mef-types:l2cp-handling-type
303         |     |     +--rw subtype*              yang:hex-string
304         |     +--rw id            mef-types:identifier45
305         |     +--rw user-label?   mef-types:identifier45
306         +--rw l2cp-peering
307         |  +--rw l2cp-profile* [id]
308         |     +--rw l2cps
309         |     |  +--rw l2cp* [dest-mac-addr peering-proto-name]
310         |     |     +--rw dest-mac-addr         yang:mac-address
311         |     |     +--rw peering-proto-name    mef-types:identifier45
312         |     |     +--rw protocol?             mef-types:l2cp-peering-protocol-type
313         |     |     +--rw protocol-id?          yang:hex-string
314         |     |     +--rw subtype*              yang:hex-string
315         |     +--rw id            mef-types:identifier45
316         |     +--rw user-label?   mef-types:identifier45
317         +--rw elmi
318         |  +--rw elmi-profile* [id]
319         |     +--rw id                            mef-types:identifier45
320         |     +--rw user-label?                   mef-types:identifier45
321         |     +--rw polling-counter?              mef-types:elmi-polling-counter-type
322         |     +--rw status-error-threshold?       mef-types:elmi-status-error-threshold-type
323         |     +--rw polling-timer?                mef-types:elmi-polling-timer-type
324         |     +--rw polling-verification-timer?   mef-types:elmi-polling-verification-timer-type
325         +--rw eec
326         |  +--rw eec-profile* [id]
327         |     +--rw id          mef-types:identifier45
328         |     +--rw (eec-id)?
329         |        +--:(pcp)
330         |        |  +--rw eec-pcp!
331         |        |     +--rw default-pcp-eec-name?   -> /mef-global/profiles/eec-names/eec-name/name
332         |        |     +--rw default-pcp-color?      mef-types:cos-color-type
333         |        |     +--rw pcp* [pcp-value]
334         |        |        +--rw pcp-value        mef-types:ieee8021p-priority-type
335         |        |        +--rw discard-value?   boolean
336         |        |        +--rw eec-name?        -> /mef-global/profiles/eec-names/eec-name/name
337         |        |        +--rw color?           mef-types:cos-color-type
338         |        +--:(dscp)
339         |           +--rw eec-dscp!
340         |              +--rw default-ipv4-eec-name?   -> /mef-global/profiles/eec-names/eec-name/name
341         |              +--rw default-ipv4-color?      mef-types:cos-color-type
342         |              +--rw default-ipv6-eec-name?   -> /mef-global/profiles/eec-names/eec-name/name
343         |              +--rw default-ipv6-color?      mef-types:cos-color-type
344         |              +--rw ipv4-dscp* [dscp-value]
345         |              |  +--rw dscp-value       inet:dscp
346         |              |  +--rw discard-value?   boolean
347         |              |  +--rw eec-name?        -> /mef-global/profiles/eec-names/eec-name/name
348         |              |  +--rw color?           mef-types:cos-color-type
349         |              +--rw ipv6-dscp* [dscp-value]
350         |                 +--rw dscp-value       inet:dscp
351         |                 +--rw discard-value?   boolean
352         |                 +--rw eec-name?        -> /mef-global/profiles/eec-names/eec-name/name
353         |                 +--rw color?           mef-types:cos-color-type
354         +--rw cos
355            +--rw cos-profile* [id]
356               +--rw id          mef-types:identifier45
357               +--rw (cos-id)?
358                  +--:(evc)
359                  |  +--rw cos-evc!
360                  |     +--rw default-evc-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
361                  |     +--rw default-evc-color?      mef-types:cos-color-type
362                  +--:(pcp)
363                  |  +--rw cos-pcp!
364                  |     +--rw default-pcp-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
365                  |     +--rw default-pcp-color?      mef-types:cos-color-type
366                  |     +--rw pcp* [pcp-value]
367                  |        +--rw pcp-value        mef-types:ieee8021p-priority-type
368                  |        +--rw discard-value?   boolean
369                  |        +--rw cos-name?        -> /mef-global/profiles/cos-names/cos-name/name
370                  |        +--rw color?           mef-types:cos-color-type
371                  +--:(dscp)
372                     +--rw cos-dscp!
373                        +--rw default-ipv4-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
374                        +--rw default-ipv4-color?      mef-types:cos-color-type
375                        +--rw default-ipv6-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
376                        +--rw default-ipv6-color?      mef-types:cos-color-type
377                        +--rw ipv4-dscp* [dscp-value]
378                        |  +--rw dscp-value       inet:dscp
379                        |  +--rw discard-value?   boolean
380                        |  +--rw cos-name?        -> /mef-global/profiles/cos-names/cos-name/name
381                        |  +--rw color?           mef-types:cos-color-type
382                        +--rw ipv6-dscp* [dscp-value]
383                           +--rw dscp-value       inet:dscp
384                           +--rw discard-value?   boolean
385                           +--rw cos-name?        -> /mef-global/profiles/cos-names/cos-name/name
386                           +--rw color?           mef-types:cos-color-type
387
388 Presto API Tree
389 ---------------
390
391 module: onf-core-network-module
392 ::
393   +--rw forwarding-constructs
394      +--rw forwarding-construct* [uuid]
395         +--rw uuid                   string
396         +--rw layerProtocolName?     onf-cnt:LayerProtocolName
397         +--rw lowerLevelFc*          -> /forwarding-constructs/forwarding-construct/uuid
398         +--rw fcRoute* [uuid]
399         |  +--rw uuid    string
400         |  +--rw fc*     -> /forwarding-constructs/forwarding-construct/uuid
401         +--rw fcPort* [topology node tp]
402         |  +--rw topology           nt:topology-ref
403         |  +--rw node               nt:node-ref
404         |  +--rw tp                 nt:tp-ref
405         |  +--rw role?              onf-cnt:PortRole
406         |  +--rw fcPortDirection?   onf-cnt:PortDirection
407         +--rw fcSpec
408         |  +--rw uuid?                      string
409         |  +--rw fcPortSpec* [uuid]
410         |  |  +--rw uuid                string
411         |  |  +--rw ingressFcPortSet* [topology node tp]
412         |  |  |  +--rw topology    nt:topology-ref
413         |  |  |  +--rw node        nt:node-ref
414         |  |  |  +--rw tp          nt:tp-ref
415         |  |  +--rw egressFcPortSet* [topology node tp]
416         |  |  |  +--rw topology    nt:topology-ref
417         |  |  |  +--rw node        nt:node-ref
418         |  |  |  +--rw tp          nt:tp-ref
419         |  |  +--rw role?               string
420         |  +--rw nrp:nrp-ce-fcspec-attrs
421         |     +--rw nrp:connectionType?           nrp-types:NRP_ConnectionType
422         |     +--rw nrp:unicastFrameDelivery?     nrp-types:NRP_ServiceFrameDelivery
423         |     +--rw nrp:multicastFrameDelivery?   nrp-types:NRP_ServiceFrameDelivery
424         |     +--rw nrp:broadcastFrameDelivery?   nrp-types:NRP_ServiceFrameDelivery
425         |     +--rw nrp:vcMaxServiceFrame?        nrp-types:NRP_PositiveInteger
426         |     +--rw nrp:vcId?                     nrp-types:NRP_PositiveInteger
427         +--rw forwardingDirection?   onf-cnt:ForwardingDirection
428
429 augment /nt:network-topology/nt:topology/nt:node/nt:termination-point:
430 ::
431   +--rw ltp-attrs
432      +--rw lpList* [uuid]
433      |  +--rw uuid                        string
434      |  +--rw layerProtocolName?          onf-cnt:LayerProtocolName
435      |  +--rw lpSpec
436      |  |  +--rw adapterSpec
437      |  |  |  +--rw nrp:nrp-conn-adapt-spec-attrs
438      |  |  |  |  +--rw nrp:sourceMacAddressLimit
439      |  |  |  |  |  +--rw nrp:enabled?        boolean
440      |  |  |  |  |  +--rw nrp:limit?          NRP_NaturalNumber
441      |  |  |  |  |  +--rw nrp:timeInterval?   NRP_NaturalNumber
442      |  |  |  |  +--rw nrp:CeExternalInterface
443      |  |  |  |  |  +--rw nrp:physicalLayer?             nrp-types:NRP_PhysicalLayer
444      |  |  |  |  |  +--rw nrp:syncMode* [linkId]
445      |  |  |  |  |  |  +--rw nrp:linkId             string
446      |  |  |  |  |  |  +--rw nrp:syncModeEnabled?   boolean
447      |  |  |  |  |  +--rw nrp:numberOfLinks?             nrp-types:NRP_NaturalNumber
448      |  |  |  |  |  +--rw nrp:resiliency?                nrp-types:NRP_InterfaceResiliency
449      |  |  |  |  |  +--rw nrp:portConvsIdToAggLinkMap
450      |  |  |  |  |  |  +--rw nrp:conversationId?   NRP_NaturalNumber
451      |  |  |  |  |  |  +--rw nrp:linkId?           NRP_NaturalNumber
452      |  |  |  |  |  +--rw nrp:maxFrameSize?              nrp-types:NRP_NaturalNumber
453      |  |  |  |  |  +--rw nrp:linkOamEnabled?            boolean
454      |  |  |  |  |  +--rw nrp:tokenShareEnabled?         boolean
455      |  |  |  |  |  +--rw nrp:serviceProviderUniId?      string
456      |  |  |  |  +--rw nrp:coloridentifier
457      |  |  |  |  |  +--rw (identifier)?
458      |  |  |  |  |     +--:(sap-color-id)
459      |  |  |  |  |     |  +--rw nrp:serviceAccessPointColorId
460      |  |  |  |  |     |     +--rw nrp:color?   nrp-types:NRP_FrameColor
461      |  |  |  |  |     +--:(pcp-color-id)
462      |  |  |  |  |     |  +--rw nrp:pcpColorId
463      |  |  |  |  |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
464      |  |  |  |  |     |     +--rw nrp:pcpValue*   nrp-types:NRP_NaturalNumber
465      |  |  |  |  |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
466      |  |  |  |  |     +--:(dei-color-id)
467      |  |  |  |  |     |  +--rw nrp:deiColorId
468      |  |  |  |  |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
469      |  |  |  |  |     |     +--rw nrp:deiValue*   nrp-types:NRP_NaturalNumber
470      |  |  |  |  |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
471      |  |  |  |  |     +--:(desp-color-id)
472      |  |  |  |  |        +--rw nrp:despColorId
473      |  |  |  |  |           +--rw nrp:ipVersion?   nrp-types:NRP_IpVersion
474      |  |  |  |  |           +--rw nrp:dscpValue*   nrp-types:NRP_NaturalNumber
475      |  |  |  |  |           +--rw nrp:color?       nrp-types:NRP_FrameColor
476      |  |  |  |  +--rw nrp:ingressBwpFlow
477      |  |  |  |  |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
478      |  |  |  |  |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
479      |  |  |  |  |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
480      |  |  |  |  |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
481      |  |  |  |  |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
482      |  |  |  |  |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
483      |  |  |  |  |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
484      |  |  |  |  |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
485      |  |  |  |  |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
486      |  |  |  |  |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
487      |  |  |  |  |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
488      |  |  |  |  +--rw nrp:egressBwpFlow
489      |  |  |  |  |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
490      |  |  |  |  |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
491      |  |  |  |  |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
492      |  |  |  |  |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
493      |  |  |  |  |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
494      |  |  |  |  |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
495      |  |  |  |  |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
496      |  |  |  |  |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
497      |  |  |  |  |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
498      |  |  |  |  |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
499      |  |  |  |  |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
500      |  |  |  |  +--rw nrp:l2cpAddressSet?          nrp-types:NRP_L2cpAddressSet
501      |  |  |  |  +--rw nrp:l2cpPeering* [linkId]
502      |  |  |  |     +--rw nrp:destinationMacAddress?   string
503      |  |  |  |     +--rw nrp:protocolType?            NRP_ProtocolFrameType
504      |  |  |  |     +--rw nrp:linkId                   string
505      |  |  |  |     +--rw nrp:protocolId?              string
506      |  |  |  +--rw nrp:nrp-ivc-endpoint-conn-adapt-spec-attrs
507      |  |  |  |  +--rw nrp:ivcEndPointId?             string
508      |  |  |  |  +--rw nrp:testMegEnabled?            boolean
509      |  |  |  |  +--rw nrp:ivcEndPointRole?           nrp-types:NRP_EndPointRole
510      |  |  |  |  +--rw nrp:ivcEndPointMap* [vlanId]
511      |  |  |  |  |  +--rw nrp:vlanId        nrp-types:NRP_PositiveInteger
512      |  |  |  |  |  +--rw (endpoint-map-form)?
513      |  |  |  |  |     +--:(map-form-e)
514      |  |  |  |  |     |  +--rw nrp:enni-svid* [vid]
515      |  |  |  |  |     |     +--rw nrp:vid    nrp-types:NRP_PositiveInteger
516      |  |  |  |  |     +--:(map-form-t)
517      |  |  |  |  |     |  +--rw nrp:root-svid?    nrp-types:NRP_PositiveInteger
518      |  |  |  |  |     |  +--rw nrp:leaf-svid?    nrp-types:NRP_PositiveInteger
519      |  |  |  |  |     +--:(map-form-v)
520      |  |  |  |  |     |  +--rw nrp:vuni-vid?     nrp-types:NRP_PositiveInteger
521      |  |  |  |  |     |  +--rw nrp:enni-cevid* [vid]
522      |  |  |  |  |     |     +--rw nrp:vid    nrp-types:NRP_PositiveInteger
523      |  |  |  |  |     +--:(map-form-u)
524      |  |  |  |  |        +--rw nrp:cvid* [vid]
525      |  |  |  |  |           +--rw nrp:vid    nrp-types:NRP_PositiveInteger
526      |  |  |  |  +--rw nrp:subscriberMegMipEnabled?   boolean
527      |  |  |  +--rw nrp:nrp-evc-endpoint-conn-adapt-spec-attrs
528      |  |  |     +--rw nrp:sourceMacAddressLimit
529      |  |  |     |  +--rw nrp:enabled?        boolean
530      |  |  |     |  +--rw nrp:limit?          NRP_NaturalNumber
531      |  |  |     |  +--rw nrp:timeInterval?   NRP_NaturalNumber
532      |  |  |     +--rw nrp:CeExternalInterface
533      |  |  |     |  +--rw nrp:physicalLayer?             nrp-types:NRP_PhysicalLayer
534      |  |  |     |  +--rw nrp:syncMode* [linkId]
535      |  |  |     |  |  +--rw nrp:linkId             string
536      |  |  |     |  |  +--rw nrp:syncModeEnabled?   boolean
537      |  |  |     |  +--rw nrp:numberOfLinks?             nrp-types:NRP_NaturalNumber
538      |  |  |     |  +--rw nrp:resiliency?                nrp-types:NRP_InterfaceResiliency
539      |  |  |     |  +--rw nrp:portConvsIdToAggLinkMap
540      |  |  |     |  |  +--rw nrp:conversationId?   NRP_NaturalNumber
541      |  |  |     |  |  +--rw nrp:linkId?           NRP_NaturalNumber
542      |  |  |     |  +--rw nrp:maxFrameSize?              nrp-types:NRP_NaturalNumber
543      |  |  |     |  +--rw nrp:linkOamEnabled?            boolean
544      |  |  |     |  +--rw nrp:tokenShareEnabled?         boolean
545      |  |  |     |  +--rw nrp:serviceProviderUniId?      string
546      |  |  |     +--rw nrp:coloridentifier
547      |  |  |     |  +--rw (identifier)?
548      |  |  |     |     +--:(sap-color-id)
549      |  |  |     |     |  +--rw nrp:serviceAccessPointColorId
550      |  |  |     |     |     +--rw nrp:color?   nrp-types:NRP_FrameColor
551      |  |  |     |     +--:(pcp-color-id)
552      |  |  |     |     |  +--rw nrp:pcpColorId
553      |  |  |     |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
554      |  |  |     |     |     +--rw nrp:pcpValue*   nrp-types:NRP_NaturalNumber
555      |  |  |     |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
556      |  |  |     |     +--:(dei-color-id)
557      |  |  |     |     |  +--rw nrp:deiColorId
558      |  |  |     |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
559      |  |  |     |     |     +--rw nrp:deiValue*   nrp-types:NRP_NaturalNumber
560      |  |  |     |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
561      |  |  |     |     +--:(desp-color-id)
562      |  |  |     |        +--rw nrp:despColorId
563      |  |  |     |           +--rw nrp:ipVersion?   nrp-types:NRP_IpVersion
564      |  |  |     |           +--rw nrp:dscpValue*   nrp-types:NRP_NaturalNumber
565      |  |  |     |           +--rw nrp:color?       nrp-types:NRP_FrameColor
566      |  |  |     +--rw nrp:ingressBwpFlow
567      |  |  |     |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
568      |  |  |     |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
569      |  |  |     |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
570      |  |  |     |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
571      |  |  |     |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
572      |  |  |     |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
573      |  |  |     |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
574      |  |  |     |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
575      |  |  |     |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
576      |  |  |     |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
577      |  |  |     |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
578      |  |  |     +--rw nrp:egressBwpFlow
579      |  |  |     |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
580      |  |  |     |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
581      |  |  |     |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
582      |  |  |     |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
583      |  |  |     |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
584      |  |  |     |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
585      |  |  |     |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
586      |  |  |     |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
587      |  |  |     |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
588      |  |  |     |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
589      |  |  |     |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
590      |  |  |     +--rw nrp:l2cpAddressSet?            nrp-types:NRP_L2cpAddressSet
591      |  |  |     +--rw nrp:l2cpPeering* [linkId]
592      |  |  |     |  +--rw nrp:destinationMacAddress?   string
593      |  |  |     |  +--rw nrp:protocolType?            NRP_ProtocolFrameType
594      |  |  |     |  +--rw nrp:linkId                   string
595      |  |  |     |  +--rw nrp:protocolId?              string
596      |  |  |     +--rw nrp:evcEndPointId?             nrp-types:NRP_PositiveInteger
597      |  |  |     +--rw nrp:testMegEnabled?            boolean
598      |  |  |     +--rw nrp:evcEndPointRole?           nrp-types:NRP_EvcEndPointRole
599      |  |  |     +--rw nrp:evcEndPointMap* [vid]
600      |  |  |     |  +--rw nrp:vid    nrp-types:NRP_PositiveInteger
601      |  |  |     +--rw nrp:subscriberMegMipEbabled?   boolean
602      |  |  +--rw terminationSpec
603      |  |  |  +--rw nrp:nrp-termination-spec-attrs
604      |  |  |  |  +--rw nrp:physicalLayer?             nrp-types:NRP_PhysicalLayer
605      |  |  |  |  +--rw nrp:syncMode* [linkId]
606      |  |  |  |  |  +--rw nrp:linkId             string
607      |  |  |  |  |  +--rw nrp:syncModeEnabled?   boolean
608      |  |  |  |  +--rw nrp:numberOfLinks?             nrp-types:NRP_NaturalNumber
609      |  |  |  |  +--rw nrp:resiliency?                nrp-types:NRP_InterfaceResiliency
610      |  |  |  |  +--rw nrp:portConvsIdToAggLinkMap
611      |  |  |  |  |  +--rw nrp:conversationId?   NRP_NaturalNumber
612      |  |  |  |  |  +--rw nrp:linkId?           NRP_NaturalNumber
613      |  |  |  |  +--rw nrp:maxFrameSize?              nrp-types:NRP_NaturalNumber
614      |  |  |  |  +--rw nrp:linkOamEnabled?            boolean
615      |  |  |  |  +--rw nrp:tokenShareEnabled?         boolean
616      |  |  |  |  +--rw nrp:serviceProviderUniId?      string
617      |  |  |  +--rw nrp:nrp-uni-termination-attrs
618      |  |  |     +--rw nrp:defaultCeVlanId?             nrp-types:NRP_PositiveInteger
619      |  |  |     +--rw nrp:uniMegEnabled?               boolean
620      |  |  |     +--rw nrp:elmiEnabled?                 boolean
621      |  |  |     +--rw nrp:serviceprovideruniprofile?   string
622      |  |  |     +--rw nrp:operatoruniprofile?          string
623      |  |  |     +--rw nrp:ingressBwpUni
624      |  |  |     |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
625      |  |  |     |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
626      |  |  |     |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
627      |  |  |     |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
628      |  |  |     |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
629      |  |  |     |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
630      |  |  |     |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
631      |  |  |     |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
632      |  |  |     |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
633      |  |  |     |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
634      |  |  |     |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
635      |  |  |     +--rw nrp:egressBwpUni
636      |  |  |        +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
637      |  |  |        +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
638      |  |  |        +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
639      |  |  |        +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
640      |  |  |        +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
641      |  |  |        +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
642      |  |  |        +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
643      |  |  |        +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
644      |  |  |        +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
645      |  |  |        +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
646      |  |  |        +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
647      |  |  +--rw adapterPropertySpecList* [uuid]
648      |  |  |  +--rw uuid    string
649      |  |  +--rw providerViewSpec
650      |  |  +--rw serverSpecList* [uuid]
651      |  |     +--rw uuid    string
652      |  +--rw configuredClientCapacity?   string
653      |  +--rw lpDirection?                onf-cnt:TerminationDirection
654      |  +--rw terminationState?           string
655      +--rw ltpSpec
656      +--rw ltpDirection?   onf-cnt:TerminationDirection