Merge "Separate project docs into managed/self-managed"
[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 ::
126
127   +--rw mef-services
128      +--rw mef-service* [svc-id]
129         +--rw evc
130         |  +--rw unis
131         |  |  +--rw uni* [uni-id]
132         |  |     +--rw evc-uni-ce-vlans
133         |  |     |  +--rw evc-uni-ce-vlan* [vid]
134         |  |     |     +--rw vid    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ce-vlans/ce-vlan/vid
135         |  |     +--rw ingress-bwp-flows-per-cos!
136         |  |     |  +--rw coupling-enabled?   boolean
137         |  |     |  +--rw bwp-flow-per-cos* [cos-name]
138         |  |     |     +--rw cos-name      -> /mef-global:mef-global/profiles/cos-names/cos-name/name
139         |  |     |     +--rw bw-profile    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ingress-envelopes/envelope/env-id
140         |  |     +--rw egress-bwp-flows-per-eec!
141         |  |     |  +--rw coupling-enabled?   boolean
142         |  |     |  +--rw bwp-flow-per-eec* [eec-name]
143         |  |     |     +--rw eec-name      -> /mef-global:mef-global/profiles/eec-names/eec-name/name
144         |  |     |     +--rw bw-profile    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/egress-envelopes/envelope/env-id
145         |  |     +--rw status
146         |  |     |  +--ro oper-state-enabled?   boolean
147         |  |     |  +--ro available-status?     mef-types:svc-endpoint-availability-type
148         |  |     +--rw uni-id                         -> /mef-interfaces:mef-interfaces/unis/uni/uni-id
149         |  |     +--rw role                           mef-types:evc-uni-role-type
150         |  |     +--rw admin-state-enabled?           boolean
151         |  |     +--rw color-id?                      mef-types:cos-color-identifier-type
152         |  |     +--rw data-svc-frm-cos?              -> /mef-global:mef-global/profiles/cos/cos-profile/id
153         |  |     +--rw l2cp-svc-frm-cos?              -> /mef-global:mef-global/profiles/l2cp-cos/l2cp-profile/id
154         |  |     +--rw soam-svc-frm-cos?              -> /mef-global:mef-global/profiles/cos/cos-profile/id
155         |  |     +--rw data-svc-frm-eec?              -> /mef-global:mef-global/profiles/eec/eec-profile/id
156         |  |     +--rw l2cp-svc-frm-eec?              -> /mef-global:mef-global/profiles/l2cp-eec/l2cp-profile/id
157         |  |     +--rw soam-svc-frm-eec?              -> /mef-global:mef-global/profiles/eec/eec-profile/id
158         |  |     +--rw ingress-bw-profile-per-evc?    -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/ingress-envelopes/envelope/env-id
159         |  |     +--rw egress-bw-profile-per-evc?     -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/egress-envelopes/envelope/env-id
160         |  |     +--rw src-mac-addr-limit-enabled?    boolean
161         |  |     +--rw src-mac-addr-limit?            uint32
162         |  |     +--rw src-mac-addr-limit-interval?   yang:timeticks
163         |  |     +--rw test-meg-enabled?              boolean
164         |  |     +--rw test-meg?                      mef-types:identifier45
165         |  |     +--rw subscriber-meg-mip-enabled?    boolean
166         |  |     +--rw subscriber-meg-mip?            mef-types:identifier45
167         |  +--rw status
168         |  |  +--ro oper-state-enabled?   boolean
169         |  |  +--ro available-status?     mef-types:virt-cx-availability-type
170         |  +--rw sls-inclusions-by-cos
171         |  |  +--rw sls-inclusion-by-cos* [cos-name]
172         |  |     +--rw cos-name    -> /mef-global:mef-global/profiles/cos-names/cos-name/name
173         |  +--rw sls-uni-inclusions!
174         |  |  +--rw sls-uni-inclusion-set* [pm-type pm-id uni-id1 uni-id2]
175         |  |     +--rw pm-type    -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type
176         |  |     +--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
177         |  |     +--rw uni-id1    -> ../../../unis/uni/uni-id
178         |  |     +--rw uni-id2    -> ../../../unis/uni/uni-id
179         |  +--rw sls-uni-exclusions!
180         |  |  +--rw sls-uni-exclusion-set* [pm-type pm-id uni-id1 uni-id2]
181         |  |     +--rw pm-type    -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type
182         |  |     +--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
183         |  |     +--rw uni-id1    -> ../../../unis/uni/uni-id
184         |  |     +--rw uni-id2    -> ../../../unis/uni/uni-id
185         |  +--rw evc-id                        mef-types:evc-id-type
186         |  +--ro evc-status?                   mef-types:evc-status-type
187         |  +--rw evc-type                      mef-types:evc-type
188         |  +--rw admin-state-enabled?          boolean
189         |  +--rw elastic-enabled?              boolean
190         |  +--rw elastic-service?              mef-types:identifier45
191         |  +--rw max-uni-count?                uint32
192         |  +--rw preserve-ce-vlan-id?          boolean
193         |  +--rw cos-preserve-ce-vlan-id?      boolean
194         |  +--rw evc-performance-sls?          -> /mef-global:mef-global/slss/sls/sls-id
195         |  +--rw unicast-svc-frm-delivery?     mef-types:data-svc-frame-delivery-type
196         |  +--rw multicast-svc-frm-delivery?   mef-types:data-svc-frame-delivery-type
197         |  +--rw broadcast-svc-frm-delivery?   mef-types:data-svc-frame-delivery-type
198         |  +--rw evc-meg-id?                   mef-types:identifier45
199         |  +--rw max-svc-frame-size?           mef-types:max-svc-frame-size-type
200         +--rw svc-id        mef-types:retail-svc-id-type
201         +--rw sp-id?        -> /mef-global:mef-global/svc-providers/svc-provider/sp-id
202         +--rw svc-type?     mef-types:mef-service-type
203         +--rw user-label?   mef-types:identifier45
204         +--rw svc-entity?   mef-types:service-entity-type
205
206 module: mef-global
207
208 ::
209
210   +--rw mef-global
211      +--rw svc-providers!
212      |  +--rw svc-provider* [sp-id]
213      |     +--rw sp-id    mef-types:svc-provider-type
214      +--rw cens!
215      |  +--rw cen* [cen-id]
216      |     +--rw cen-id    mef-types:cen-type
217      |     +--rw sp-id?    -> /mef-global/svc-providers/svc-provider/sp-id
218      +--rw slss!
219      |  +--rw sls* [sls-id]
220      |     +--rw perf-objs
221      |     |  +--rw pm-time-interval                    uint64
222      |     |  +--rw pm-time-interval-increment          uint64
223      |     |  +--rw unavail-flr-threshold-pp            mef-types:simple-percent
224      |     |  +--rw consecutive-small-time-intervals    uint64
225      |     |  +--rw perf-obj* [pm-type pm-id]
226      |     |     +--rw pm-type                                  mef-types:performance-metric-type
227      |     |     +--rw pm-id                                    mef-types:identifier45
228      |     |     +--rw cos-name                                 -> /mef-global/profiles/cos-names/cos-name/name
229      |     |     +--rw fd-pp                                    mef-types:simple-percent
230      |     |     +--rw fd-range-pp                              mef-types:simple-percent
231      |     |     +--rw fd-perf-obj                              uint64
232      |     |     +--rw fd-range-perf-obj                        uint64
233      |     |     +--rw fd-mean-perf-obj                         uint64
234      |     |     +--rw ifdv-pp                                  mef-types:simple-percent
235      |     |     +--rw ifdv-pair-interval                       mef-types:simple-percent
236      |     |     +--rw ifdv-perf-obj                            uint64
237      |     |     +--rw flr-perf-obj                             uint64
238      |     |     +--rw avail-pp                                 mef-types:simple-percent
239      |     |     +--rw hli-perf-obj                             uint64
240      |     |     +--rw chli-consecutive-small-time-intervals    uint64
241      |     |     +--rw chli-perf-obj                            uint64
242      |     |     +--rw min-uni-pairs-avail                      uint64
243      |     |     +--rw gp-avail-pp                              mef-types:simple-percent
244      |     +--rw sls-id       mef-types:cen-type
245      |     +--rw sp-id?       -> /mef-global/svc-providers/svc-provider/sp-id
246      +--rw subscribers!
247      |  +--rw subscriber* [sub-id]
248      |     +--rw sub-id    mef-types:subscriber-type
249      |     +--rw sp-id?    -> /mef-global/svc-providers/svc-provider/sp-id
250      |     +--rw cen-id?   -> /mef-global/cens/cen/cen-id
251      +--rw profiles!
252         +--rw cos-names
253         |  +--rw cos-name* [name]
254         |     +--rw name    mef-types:identifier45
255         +--rw eec-names
256         |  +--rw eec-name* [name]
257         |     +--rw name    mef-types:identifier45
258         +--rw ingress-bwp-flows
259         |  +--rw bwp-flow* [bw-profile]
260         |     +--rw bw-profile          mef-types:identifier45
261         |     +--rw user-label?         mef-types:identifier45
262         |     +--rw cir?                mef-types:bwp-cir-type
263         |     +--rw cir-max?            mef-types:bwp-cir-type
264         |     +--rw cbs?                mef-types:bwp-cbs-type
265         |     +--rw eir?                mef-types:bwp-eir-type
266         |     +--rw eir-max?            mef-types:bwp-eir-type
267         |     +--rw ebs?                mef-types:bwp-ebs-type
268         |     +--rw coupling-enabled?   boolean
269         |     +--rw color-mode?         mef-types:bwp-color-mode-type
270         |     +--rw coupling-flag?      mef-types:bwp-coupling-flag-type
271         +--rw egress-bwp-flows
272         |  +--rw bwp-flow* [bw-profile]
273         |     +--rw bw-profile          mef-types:identifier45
274         |     +--rw user-label?         mef-types:identifier45
275         |     +--rw cir?                mef-types:bwp-cir-type
276         |     +--rw cir-max?            mef-types:bwp-cir-type
277         |     +--rw cbs?                mef-types:bwp-cbs-type
278         |     +--rw eir?                mef-types:bwp-eir-type
279         |     +--rw eir-max?            mef-types:bwp-eir-type
280         |     +--rw ebs?                mef-types:bwp-ebs-type
281         |     +--rw coupling-enabled?   boolean
282         |     +--rw color-mode?         mef-types:bwp-color-mode-type
283         |     +--rw coupling-flag?      mef-types:bwp-coupling-flag-type
284         +--rw l2cp-cos
285         |  +--rw l2cp-profile* [id]
286         |     +--rw l2cps
287         |     |  +--rw l2cp* [dest-mac-addr peering-proto-name]
288         |     |     +--rw dest-mac-addr         yang:mac-address
289         |     |     +--rw peering-proto-name    mef-types:identifier45
290         |     |     +--rw protocol?             mef-types:l2cp-peering-protocol-type
291         |     |     +--rw protocol-id?          yang:hex-string
292         |     |     +--rw cos-name?             -> /mef-global/profiles/cos-names/cos-name/name
293         |     |     +--rw handling?             mef-types:l2cp-handling-type
294         |     |     +--rw subtype*              yang:hex-string
295         |     +--rw id            mef-types:identifier45
296         |     +--rw user-label?   mef-types:identifier45
297         +--rw l2cp-eec
298         |  +--rw l2cp-profile* [id]
299         |     +--rw l2cps
300         |     |  +--rw l2cp* [dest-mac-addr peering-proto-name]
301         |     |     +--rw dest-mac-addr         yang:mac-address
302         |     |     +--rw peering-proto-name    mef-types:identifier45
303         |     |     +--rw protocol?             mef-types:l2cp-peering-protocol-type
304         |     |     +--rw protocol-id?          yang:hex-string
305         |     |     +--rw eec-name?             -> /mef-global/profiles/eec-names/eec-name/name
306         |     |     +--rw handling?             mef-types:l2cp-handling-type
307         |     |     +--rw subtype*              yang:hex-string
308         |     +--rw id            mef-types:identifier45
309         |     +--rw user-label?   mef-types:identifier45
310         +--rw l2cp-peering
311         |  +--rw l2cp-profile* [id]
312         |     +--rw l2cps
313         |     |  +--rw l2cp* [dest-mac-addr peering-proto-name]
314         |     |     +--rw dest-mac-addr         yang:mac-address
315         |     |     +--rw peering-proto-name    mef-types:identifier45
316         |     |     +--rw protocol?             mef-types:l2cp-peering-protocol-type
317         |     |     +--rw protocol-id?          yang:hex-string
318         |     |     +--rw subtype*              yang:hex-string
319         |     +--rw id            mef-types:identifier45
320         |     +--rw user-label?   mef-types:identifier45
321         +--rw elmi
322         |  +--rw elmi-profile* [id]
323         |     +--rw id                            mef-types:identifier45
324         |     +--rw user-label?                   mef-types:identifier45
325         |     +--rw polling-counter?              mef-types:elmi-polling-counter-type
326         |     +--rw status-error-threshold?       mef-types:elmi-status-error-threshold-type
327         |     +--rw polling-timer?                mef-types:elmi-polling-timer-type
328         |     +--rw polling-verification-timer?   mef-types:elmi-polling-verification-timer-type
329         +--rw eec
330         |  +--rw eec-profile* [id]
331         |     +--rw id          mef-types:identifier45
332         |     +--rw (eec-id)?
333         |        +--:(pcp)
334         |        |  +--rw eec-pcp!
335         |        |     +--rw default-pcp-eec-name?   -> /mef-global/profiles/eec-names/eec-name/name
336         |        |     +--rw default-pcp-color?      mef-types:cos-color-type
337         |        |     +--rw pcp* [pcp-value]
338         |        |        +--rw pcp-value        mef-types:ieee8021p-priority-type
339         |        |        +--rw discard-value?   boolean
340         |        |        +--rw eec-name?        -> /mef-global/profiles/eec-names/eec-name/name
341         |        |        +--rw color?           mef-types:cos-color-type
342         |        +--:(dscp)
343         |           +--rw eec-dscp!
344         |              +--rw default-ipv4-eec-name?   -> /mef-global/profiles/eec-names/eec-name/name
345         |              +--rw default-ipv4-color?      mef-types:cos-color-type
346         |              +--rw default-ipv6-eec-name?   -> /mef-global/profiles/eec-names/eec-name/name
347         |              +--rw default-ipv6-color?      mef-types:cos-color-type
348         |              +--rw ipv4-dscp* [dscp-value]
349         |              |  +--rw dscp-value       inet:dscp
350         |              |  +--rw discard-value?   boolean
351         |              |  +--rw eec-name?        -> /mef-global/profiles/eec-names/eec-name/name
352         |              |  +--rw color?           mef-types:cos-color-type
353         |              +--rw ipv6-dscp* [dscp-value]
354         |                 +--rw dscp-value       inet:dscp
355         |                 +--rw discard-value?   boolean
356         |                 +--rw eec-name?        -> /mef-global/profiles/eec-names/eec-name/name
357         |                 +--rw color?           mef-types:cos-color-type
358         +--rw cos
359            +--rw cos-profile* [id]
360               +--rw id          mef-types:identifier45
361               +--rw (cos-id)?
362                  +--:(evc)
363                  |  +--rw cos-evc!
364                  |     +--rw default-evc-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
365                  |     +--rw default-evc-color?      mef-types:cos-color-type
366                  +--:(pcp)
367                  |  +--rw cos-pcp!
368                  |     +--rw default-pcp-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
369                  |     +--rw default-pcp-color?      mef-types:cos-color-type
370                  |     +--rw pcp* [pcp-value]
371                  |        +--rw pcp-value        mef-types:ieee8021p-priority-type
372                  |        +--rw discard-value?   boolean
373                  |        +--rw cos-name?        -> /mef-global/profiles/cos-names/cos-name/name
374                  |        +--rw color?           mef-types:cos-color-type
375                  +--:(dscp)
376                     +--rw cos-dscp!
377                        +--rw default-ipv4-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
378                        +--rw default-ipv4-color?      mef-types:cos-color-type
379                        +--rw default-ipv6-cos-name?   -> /mef-global/profiles/cos-names/cos-name/name
380                        +--rw default-ipv6-color?      mef-types:cos-color-type
381                        +--rw ipv4-dscp* [dscp-value]
382                        |  +--rw dscp-value       inet:dscp
383                        |  +--rw discard-value?   boolean
384                        |  +--rw cos-name?        -> /mef-global/profiles/cos-names/cos-name/name
385                        |  +--rw color?           mef-types:cos-color-type
386                        +--rw ipv6-dscp* [dscp-value]
387                           +--rw dscp-value       inet:dscp
388                           +--rw discard-value?   boolean
389                           +--rw cos-name?        -> /mef-global/profiles/cos-names/cos-name/name
390                           +--rw color?           mef-types:cos-color-type
391
392 Presto API Tree
393 ---------------
394
395 module: onf-core-network-module
396
397 ::
398
399   +--rw forwarding-constructs
400      +--rw forwarding-construct* [uuid]
401         +--rw uuid                   string
402         +--rw layerProtocolName?     onf-cnt:LayerProtocolName
403         +--rw lowerLevelFc*          -> /forwarding-constructs/forwarding-construct/uuid
404         +--rw fcRoute* [uuid]
405         |  +--rw uuid    string
406         |  +--rw fc*     -> /forwarding-constructs/forwarding-construct/uuid
407         +--rw fcPort* [topology node tp]
408         |  +--rw topology           nt:topology-ref
409         |  +--rw node               nt:node-ref
410         |  +--rw tp                 nt:tp-ref
411         |  +--rw role?              onf-cnt:PortRole
412         |  +--rw fcPortDirection?   onf-cnt:PortDirection
413         +--rw fcSpec
414         |  +--rw uuid?                      string
415         |  +--rw fcPortSpec* [uuid]
416         |  |  +--rw uuid                string
417         |  |  +--rw ingressFcPortSet* [topology node tp]
418         |  |  |  +--rw topology    nt:topology-ref
419         |  |  |  +--rw node        nt:node-ref
420         |  |  |  +--rw tp          nt:tp-ref
421         |  |  +--rw egressFcPortSet* [topology node tp]
422         |  |  |  +--rw topology    nt:topology-ref
423         |  |  |  +--rw node        nt:node-ref
424         |  |  |  +--rw tp          nt:tp-ref
425         |  |  +--rw role?               string
426         |  +--rw nrp:nrp-ce-fcspec-attrs
427         |     +--rw nrp:connectionType?           nrp-types:NRP_ConnectionType
428         |     +--rw nrp:unicastFrameDelivery?     nrp-types:NRP_ServiceFrameDelivery
429         |     +--rw nrp:multicastFrameDelivery?   nrp-types:NRP_ServiceFrameDelivery
430         |     +--rw nrp:broadcastFrameDelivery?   nrp-types:NRP_ServiceFrameDelivery
431         |     +--rw nrp:vcMaxServiceFrame?        nrp-types:NRP_PositiveInteger
432         |     +--rw nrp:vcId?                     nrp-types:NRP_PositiveInteger
433         +--rw forwardingDirection?   onf-cnt:ForwardingDirection
434
435 augment /nt:network-topology/nt:topology/nt:node/nt:termination-point:
436
437 ::
438
439   +--rw ltp-attrs
440      +--rw lpList* [uuid]
441      |  +--rw uuid                        string
442      |  +--rw layerProtocolName?          onf-cnt:LayerProtocolName
443      |  +--rw lpSpec
444      |  |  +--rw adapterSpec
445      |  |  |  +--rw nrp:nrp-conn-adapt-spec-attrs
446      |  |  |  |  +--rw nrp:sourceMacAddressLimit
447      |  |  |  |  |  +--rw nrp:enabled?        boolean
448      |  |  |  |  |  +--rw nrp:limit?          NRP_NaturalNumber
449      |  |  |  |  |  +--rw nrp:timeInterval?   NRP_NaturalNumber
450      |  |  |  |  +--rw nrp:CeExternalInterface
451      |  |  |  |  |  +--rw nrp:physicalLayer?             nrp-types:NRP_PhysicalLayer
452      |  |  |  |  |  +--rw nrp:syncMode* [linkId]
453      |  |  |  |  |  |  +--rw nrp:linkId             string
454      |  |  |  |  |  |  +--rw nrp:syncModeEnabled?   boolean
455      |  |  |  |  |  +--rw nrp:numberOfLinks?             nrp-types:NRP_NaturalNumber
456      |  |  |  |  |  +--rw nrp:resiliency?                nrp-types:NRP_InterfaceResiliency
457      |  |  |  |  |  +--rw nrp:portConvsIdToAggLinkMap
458      |  |  |  |  |  |  +--rw nrp:conversationId?   NRP_NaturalNumber
459      |  |  |  |  |  |  +--rw nrp:linkId?           NRP_NaturalNumber
460      |  |  |  |  |  +--rw nrp:maxFrameSize?              nrp-types:NRP_NaturalNumber
461      |  |  |  |  |  +--rw nrp:linkOamEnabled?            boolean
462      |  |  |  |  |  +--rw nrp:tokenShareEnabled?         boolean
463      |  |  |  |  |  +--rw nrp:serviceProviderUniId?      string
464      |  |  |  |  +--rw nrp:coloridentifier
465      |  |  |  |  |  +--rw (identifier)?
466      |  |  |  |  |     +--:(sap-color-id)
467      |  |  |  |  |     |  +--rw nrp:serviceAccessPointColorId
468      |  |  |  |  |     |     +--rw nrp:color?   nrp-types:NRP_FrameColor
469      |  |  |  |  |     +--:(pcp-color-id)
470      |  |  |  |  |     |  +--rw nrp:pcpColorId
471      |  |  |  |  |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
472      |  |  |  |  |     |     +--rw nrp:pcpValue*   nrp-types:NRP_NaturalNumber
473      |  |  |  |  |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
474      |  |  |  |  |     +--:(dei-color-id)
475      |  |  |  |  |     |  +--rw nrp:deiColorId
476      |  |  |  |  |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
477      |  |  |  |  |     |     +--rw nrp:deiValue*   nrp-types:NRP_NaturalNumber
478      |  |  |  |  |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
479      |  |  |  |  |     +--:(desp-color-id)
480      |  |  |  |  |        +--rw nrp:despColorId
481      |  |  |  |  |           +--rw nrp:ipVersion?   nrp-types:NRP_IpVersion
482      |  |  |  |  |           +--rw nrp:dscpValue*   nrp-types:NRP_NaturalNumber
483      |  |  |  |  |           +--rw nrp:color?       nrp-types:NRP_FrameColor
484      |  |  |  |  +--rw nrp:ingressBwpFlow
485      |  |  |  |  |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
486      |  |  |  |  |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
487      |  |  |  |  |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
488      |  |  |  |  |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
489      |  |  |  |  |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
490      |  |  |  |  |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
491      |  |  |  |  |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
492      |  |  |  |  |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
493      |  |  |  |  |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
494      |  |  |  |  |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
495      |  |  |  |  |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
496      |  |  |  |  +--rw nrp:egressBwpFlow
497      |  |  |  |  |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
498      |  |  |  |  |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
499      |  |  |  |  |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
500      |  |  |  |  |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
501      |  |  |  |  |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
502      |  |  |  |  |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
503      |  |  |  |  |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
504      |  |  |  |  |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
505      |  |  |  |  |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
506      |  |  |  |  |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
507      |  |  |  |  |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
508      |  |  |  |  +--rw nrp:l2cpAddressSet?          nrp-types:NRP_L2cpAddressSet
509      |  |  |  |  +--rw nrp:l2cpPeering* [linkId]
510      |  |  |  |     +--rw nrp:destinationMacAddress?   string
511      |  |  |  |     +--rw nrp:protocolType?            NRP_ProtocolFrameType
512      |  |  |  |     +--rw nrp:linkId                   string
513      |  |  |  |     +--rw nrp:protocolId?              string
514      |  |  |  +--rw nrp:nrp-ivc-endpoint-conn-adapt-spec-attrs
515      |  |  |  |  +--rw nrp:ivcEndPointId?             string
516      |  |  |  |  +--rw nrp:testMegEnabled?            boolean
517      |  |  |  |  +--rw nrp:ivcEndPointRole?           nrp-types:NRP_EndPointRole
518      |  |  |  |  +--rw nrp:ivcEndPointMap* [vlanId]
519      |  |  |  |  |  +--rw nrp:vlanId        nrp-types:NRP_PositiveInteger
520      |  |  |  |  |  +--rw (endpoint-map-form)?
521      |  |  |  |  |     +--:(map-form-e)
522      |  |  |  |  |     |  +--rw nrp:enni-svid* [vid]
523      |  |  |  |  |     |     +--rw nrp:vid    nrp-types:NRP_PositiveInteger
524      |  |  |  |  |     +--:(map-form-t)
525      |  |  |  |  |     |  +--rw nrp:root-svid?    nrp-types:NRP_PositiveInteger
526      |  |  |  |  |     |  +--rw nrp:leaf-svid?    nrp-types:NRP_PositiveInteger
527      |  |  |  |  |     +--:(map-form-v)
528      |  |  |  |  |     |  +--rw nrp:vuni-vid?     nrp-types:NRP_PositiveInteger
529      |  |  |  |  |     |  +--rw nrp:enni-cevid* [vid]
530      |  |  |  |  |     |     +--rw nrp:vid    nrp-types:NRP_PositiveInteger
531      |  |  |  |  |     +--:(map-form-u)
532      |  |  |  |  |        +--rw nrp:cvid* [vid]
533      |  |  |  |  |           +--rw nrp:vid    nrp-types:NRP_PositiveInteger
534      |  |  |  |  +--rw nrp:subscriberMegMipEnabled?   boolean
535      |  |  |  +--rw nrp:nrp-evc-endpoint-conn-adapt-spec-attrs
536      |  |  |     +--rw nrp:sourceMacAddressLimit
537      |  |  |     |  +--rw nrp:enabled?        boolean
538      |  |  |     |  +--rw nrp:limit?          NRP_NaturalNumber
539      |  |  |     |  +--rw nrp:timeInterval?   NRP_NaturalNumber
540      |  |  |     +--rw nrp:CeExternalInterface
541      |  |  |     |  +--rw nrp:physicalLayer?             nrp-types:NRP_PhysicalLayer
542      |  |  |     |  +--rw nrp:syncMode* [linkId]
543      |  |  |     |  |  +--rw nrp:linkId             string
544      |  |  |     |  |  +--rw nrp:syncModeEnabled?   boolean
545      |  |  |     |  +--rw nrp:numberOfLinks?             nrp-types:NRP_NaturalNumber
546      |  |  |     |  +--rw nrp:resiliency?                nrp-types:NRP_InterfaceResiliency
547      |  |  |     |  +--rw nrp:portConvsIdToAggLinkMap
548      |  |  |     |  |  +--rw nrp:conversationId?   NRP_NaturalNumber
549      |  |  |     |  |  +--rw nrp:linkId?           NRP_NaturalNumber
550      |  |  |     |  +--rw nrp:maxFrameSize?              nrp-types:NRP_NaturalNumber
551      |  |  |     |  +--rw nrp:linkOamEnabled?            boolean
552      |  |  |     |  +--rw nrp:tokenShareEnabled?         boolean
553      |  |  |     |  +--rw nrp:serviceProviderUniId?      string
554      |  |  |     +--rw nrp:coloridentifier
555      |  |  |     |  +--rw (identifier)?
556      |  |  |     |     +--:(sap-color-id)
557      |  |  |     |     |  +--rw nrp:serviceAccessPointColorId
558      |  |  |     |     |     +--rw nrp:color?   nrp-types:NRP_FrameColor
559      |  |  |     |     +--:(pcp-color-id)
560      |  |  |     |     |  +--rw nrp:pcpColorId
561      |  |  |     |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
562      |  |  |     |     |     +--rw nrp:pcpValue*   nrp-types:NRP_NaturalNumber
563      |  |  |     |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
564      |  |  |     |     +--:(dei-color-id)
565      |  |  |     |     |  +--rw nrp:deiColorId
566      |  |  |     |     |     +--rw nrp:vlanTag?    nrp-types:NRP_VlanTag
567      |  |  |     |     |     +--rw nrp:deiValue*   nrp-types:NRP_NaturalNumber
568      |  |  |     |     |     +--rw nrp:color?      nrp-types:NRP_FrameColor
569      |  |  |     |     +--:(desp-color-id)
570      |  |  |     |        +--rw nrp:despColorId
571      |  |  |     |           +--rw nrp:ipVersion?   nrp-types:NRP_IpVersion
572      |  |  |     |           +--rw nrp:dscpValue*   nrp-types:NRP_NaturalNumber
573      |  |  |     |           +--rw nrp:color?       nrp-types:NRP_FrameColor
574      |  |  |     +--rw nrp:ingressBwpFlow
575      |  |  |     |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
576      |  |  |     |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
577      |  |  |     |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
578      |  |  |     |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
579      |  |  |     |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
580      |  |  |     |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
581      |  |  |     |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
582      |  |  |     |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
583      |  |  |     |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
584      |  |  |     |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
585      |  |  |     |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
586      |  |  |     +--rw nrp:egressBwpFlow
587      |  |  |     |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
588      |  |  |     |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
589      |  |  |     |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
590      |  |  |     |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
591      |  |  |     |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
592      |  |  |     |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
593      |  |  |     |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
594      |  |  |     |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
595      |  |  |     |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
596      |  |  |     |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
597      |  |  |     |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
598      |  |  |     +--rw nrp:l2cpAddressSet?            nrp-types:NRP_L2cpAddressSet
599      |  |  |     +--rw nrp:l2cpPeering* [linkId]
600      |  |  |     |  +--rw nrp:destinationMacAddress?   string
601      |  |  |     |  +--rw nrp:protocolType?            NRP_ProtocolFrameType
602      |  |  |     |  +--rw nrp:linkId                   string
603      |  |  |     |  +--rw nrp:protocolId?              string
604      |  |  |     +--rw nrp:evcEndPointId?             nrp-types:NRP_PositiveInteger
605      |  |  |     +--rw nrp:testMegEnabled?            boolean
606      |  |  |     +--rw nrp:evcEndPointRole?           nrp-types:NRP_EvcEndPointRole
607      |  |  |     +--rw nrp:evcEndPointMap* [vid]
608      |  |  |     |  +--rw nrp:vid    nrp-types:NRP_PositiveInteger
609      |  |  |     +--rw nrp:subscriberMegMipEbabled?   boolean
610      |  |  +--rw terminationSpec
611      |  |  |  +--rw nrp:nrp-termination-spec-attrs
612      |  |  |  |  +--rw nrp:physicalLayer?             nrp-types:NRP_PhysicalLayer
613      |  |  |  |  +--rw nrp:syncMode* [linkId]
614      |  |  |  |  |  +--rw nrp:linkId             string
615      |  |  |  |  |  +--rw nrp:syncModeEnabled?   boolean
616      |  |  |  |  +--rw nrp:numberOfLinks?             nrp-types:NRP_NaturalNumber
617      |  |  |  |  +--rw nrp:resiliency?                nrp-types:NRP_InterfaceResiliency
618      |  |  |  |  +--rw nrp:portConvsIdToAggLinkMap
619      |  |  |  |  |  +--rw nrp:conversationId?   NRP_NaturalNumber
620      |  |  |  |  |  +--rw nrp:linkId?           NRP_NaturalNumber
621      |  |  |  |  +--rw nrp:maxFrameSize?              nrp-types:NRP_NaturalNumber
622      |  |  |  |  +--rw nrp:linkOamEnabled?            boolean
623      |  |  |  |  +--rw nrp:tokenShareEnabled?         boolean
624      |  |  |  |  +--rw nrp:serviceProviderUniId?      string
625      |  |  |  +--rw nrp:nrp-uni-termination-attrs
626      |  |  |     +--rw nrp:defaultCeVlanId?             nrp-types:NRP_PositiveInteger
627      |  |  |     +--rw nrp:uniMegEnabled?               boolean
628      |  |  |     +--rw nrp:elmiEnabled?                 boolean
629      |  |  |     +--rw nrp:serviceprovideruniprofile?   string
630      |  |  |     +--rw nrp:operatoruniprofile?          string
631      |  |  |     +--rw nrp:ingressBwpUni
632      |  |  |     |  +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
633      |  |  |     |  +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
634      |  |  |     |  +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
635      |  |  |     |  +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
636      |  |  |     |  +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
637      |  |  |     |  +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
638      |  |  |     |  +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
639      |  |  |     |  +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
640      |  |  |     |  +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
641      |  |  |     |  +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
642      |  |  |     |  +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
643      |  |  |     +--rw nrp:egressBwpUni
644      |  |  |        +--rw nrp:bwpFlowIndex?         nrp-types:NRP_PositiveInteger
645      |  |  |        +--rw nrp:cir?                  nrp-types:NRP_NaturalNumber
646      |  |  |        +--rw nrp:cirMax?               nrp-types:NRP_NaturalNumber
647      |  |  |        +--rw nrp:cbs?                  nrp-types:NRP_NaturalNumber
648      |  |  |        +--rw nrp:eir?                  nrp-types:NRP_NaturalNumber
649      |  |  |        +--rw nrp:eirMax?               nrp-types:NRP_NaturalNumber
650      |  |  |        +--rw nrp:ebs?                  nrp-types:NRP_NaturalNumber
651      |  |  |        +--rw nrp:couplingFlag?         nrp-types:NRP_NaturalNumber
652      |  |  |        +--rw nrp:colorMode?            nrp-types:NRP_ColorMode
653      |  |  |        +--rw nrp:rank?                 nrp-types:NRP_PositiveInteger
654      |  |  |        +--rw nrp:tokenRequestOffset?   nrp-types:NRP_NaturalNumber
655      |  |  +--rw adapterPropertySpecList* [uuid]
656      |  |  |  +--rw uuid    string
657      |  |  +--rw providerViewSpec
658      |  |  +--rw serverSpecList* [uuid]
659      |  |     +--rw uuid    string
660      |  +--rw configuredClientCapacity?   string
661      |  +--rw lpDirection?                onf-cnt:TerminationDirection
662      |  +--rw terminationState?           string
663      +--rw ltpSpec
664      +--rw ltpDirection?   onf-cnt:TerminationDirection