1 module l-3vpn-profile-1-0 {
\r
3 namespace "urn:onf:yang:l-3vpn-profile-1-0";
\r
4 prefix l-3vpn-profile;
\r
6 import ietf-yang-types {
\r
9 import core-model-1-4 {
\r
14 "openBackhaul.com proposal to Open Networking Foundation (ONF)";
\r
16 "WG Web : https://github.com/openBackhaul/Overview
\r
17 WG List: L3vpnProfile@openBackhaul.com
\r
18 Editor : Thorsten Heinze
\r
19 Email : Thorsten.Heinze@openBackhaul.com";
\r
21 "Technology specific profile definition for Layer 3 Virtual Private Networks
\r
23 Copyright 2019 openBackhaul.com
\r
25 Licensed under the Apache License, Version 2.0 (the 'License');
\r
26 you may not use this file except in compliance with the License.
\r
27 You may obtain a copy of the License at
\r
28 http://www.apache.org/licenses/LICENSE-2.0
\r
29 Unless required by applicable law or agreed to in writing, software
\r
30 distributed under the License is distributed on an 'AS IS' BASIS,
\r
31 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
32 See the License for the specific language governing permissions and
\r
33 limitations under the License.";
\r
35 revision 2020-01-27 {
\r
37 "Model for the Transport SDN Pilot at Telefonica Germany.
\r
38 Please view https://github.com/openBackhaul/l3vpnProfile/issues for changes.";
\r
40 "https://github.com/openBackhaul/l3vpnProfile/tree/tsp: Model definition
\r
41 https://github.com/openBackhaul/onfCoreIm/tree/tsp: ONF TR-512 Core IM incl. Profile and enhanced Equipment definition";
\r
43 revision 2019-07-12 {
\r
45 "Model for the Transport SDN Pilot at Telefonica Germany.
\r
46 Please view https://github.com/openBackhaul/l3vpnProfile/issues for changes.";
\r
48 "https://github.com/openBackhaul/l3vpnProfile/tree/tsp: Model definition
\r
49 https://github.com/openBackhaul/onfCoreIm/tree/tsp: ONF TR-512 Core IM incl. Profile and enhanced Equipment definition";
\r
52 identity PROFILE_NAME_TYPE_L3VPN_PROFILE {
\r
53 base core-model:PROFILE_NAME_TYPE;
\r
58 augment "/core-model:control-construct/core-model:profile-collection/core-model:profile" {
\r
59 when "derived-from-or-self(./core-model:profile-name, 'l-3vpn-profile:PROFILE_NAME_TYPE_L3VPN_PROFILE')";
\r
60 uses l-3vpn-profile-spec;
\r
65 /****************************************
\r
66 * package notifications
\r
67 **************************************/
\r
69 notification object-creation-notification {
\r
70 uses object-creation-notification;
\r
75 grouping object-creation-notification {
\r
81 "Counts object creation notifications.";
\r
84 type yang:date-and-time;
\r
85 default "2010-11-20T14:00:00+01:00";
\r
90 leaf object-id-ref {
\r
92 path "/core-model:control-construct/core-model:profile-collection/core-model:profile/core-model:uuid";
\r
93 require-instance false;
\r
101 default "Type of created object not specified.";
\r
110 notification object-deletion-notification {
\r
111 uses object-deletion-notification;
\r
116 grouping object-deletion-notification {
\r
122 "Counts object deletion notifications.";
\r
125 type yang:date-and-time;
\r
126 default "2010-11-20T14:00:00+01:00";
\r
131 leaf object-id-ref {
\r
133 path "/core-model:control-construct/core-model:profile-collection/core-model:profile/core-model:uuid";
\r
134 require-instance false;
\r
144 /****************************************
\r
145 * grouping statements for object classes
\r
146 **************************************/
\r
148 grouping l-3vpn-profile-spec {
\r
149 container l-3vpn-pac {
\r
158 grouping l-3vpn-pac {
\r
159 container l-3vpn-capability {
\r
161 uses l-3vpn-capability;
\r
165 container l-3vpn-configuration {
\r
167 uses l-3vpn-configuration;
\r
175 grouping l-3vpn-capability {
\r
176 leaf profile-naming-is-avail {
\r
181 "1 = There is a free text field available for naming the profile.";
\r
183 leaf l-3vpn-based-on-ip-v-6-is-avail {
\r
188 "1 = Virtual Private Networks based on IP v6 addresses is available at the device.";
\r
194 grouping l-3vpn-configuration {
\r
195 leaf profile-name {
\r
197 default "Name of profile not yet defined.";
\r
199 "Identifier of the profile. Could be a name, could be a number. Free text field to be filled by the operator.";
\r
201 leaf l-3vpn-description {
\r
203 default "VPN description not yet defined.";
\r
205 "Short description of the VPN.";
\r
207 list l-3vpn-configuration-list {
\r
211 uses l-3vpn-configuration-type;
\r
213 "L3 VPN instance Configuration.";
\r
219 /****************************************
\r
220 * typedef statements
\r
221 **************************************/
\r
223 typedef label-mode-type {
\r
225 base LABEL_MODE_TYPE;
\r
231 typedef device-identifier-kind-type {
\r
233 base DEVICE_IDENTIFIER_KIND_TYPE;
\r
239 typedef address-family-type {
\r
241 base ADDRESS_FAMILY_TYPE;
\r
244 "Address family of the VRF IPv4/IPV6.";
\r
247 typedef route-pritority-type {
\r
249 base ROUTE_PRITORITY_TYPE;
\r
252 "The priority of the Route";
\r
255 typedef route-state-type {
\r
257 base ROUTE_STATE_TYPE;
\r
260 "The state of the route as per the routing table. It is a combination of the one or more of the following states: ADV, NOADV,ACTIVE, INACTIVE, RELIED.";
\r
263 typedef route-flag-type {
\r
265 base ROUTE_FLAG_TYPE;
\r
268 "Indicates the route flag, that is, Route Flags in the heading of the routing table displayed. It is a combination of one or more of the following flags: D and,R Meaning of each of the flag is availble under corresponding flag value.";
\r
271 /*********************************************
\r
272 * grouping statements for complex data types
\r
273 *******************************************/
\r
275 identity LABEL_MODE_TYPE {
\r
280 identity LABEL_MODE_TYPE_PER_INSTANCE {
\r
281 base LABEL_MODE_TYPE;
\r
283 "Labels are assigned to VPN instances in one label per instance mode, that is, all routes in a VPN instance are assigned with the same label.";
\r
286 identity LABEL_MODE_TYPE_PER_ROUTE {
\r
287 base LABEL_MODE_TYPE;
\r
289 "Labels are assigned to routes in the 'one label per route' mode, that is, each route is assigned with one label.";
\r
292 identity DEVICE_IDENTIFIER_KIND_TYPE {
\r
297 identity DEVICE_IDENTIFIER_KIND_TYPE_LOOP_BACK_IP_ADDRESS {
\r
298 base DEVICE_IDENTIFIER_KIND_TYPE;
\r
303 identity DEVICE_IDENTIFIER_KIND_TYPE_AS_NUMBER {
\r
304 base DEVICE_IDENTIFIER_KIND_TYPE;
\r
309 identity DEVICE_IDENTIFIER_KIND_TYPE_NOT_YET_DEFINED {
\r
310 base DEVICE_IDENTIFIER_KIND_TYPE;
\r
315 identity ADDRESS_FAMILY_TYPE {
\r
320 identity ADDRESS_FAMILY_TYPE_IPV4-FAMILY {
\r
321 base ADDRESS_FAMILY_TYPE;
\r
326 identity ADDRESS_FAMILY_TYPE_IPV6-FAMILY {
\r
327 base ADDRESS_FAMILY_TYPE;
\r
332 identity ADDRESS_FAMILY_TYPE_UNKNOWN {
\r
333 base ADDRESS_FAMILY_TYPE;
\r
338 identity ADDRESS_FAMILY_TYPE_NOT_YET_DEFINED {
\r
339 base ADDRESS_FAMILY_TYPE;
\r
344 identity ROUTE_PRITORITY_TYPE {
\r
349 identity ROUTE_PRITORITY_TYPE_CRITICAL {
\r
350 base ROUTE_PRITORITY_TYPE;
\r
352 "Highest protocol priority.";
\r
355 identity ROUTE_PRITORITY_TYPE_HIGH {
\r
356 base ROUTE_PRITORITY_TYPE;
\r
358 "High protocol priority";
\r
361 identity ROUTE_PRITORITY_TYPE_MEDIUM {
\r
362 base ROUTE_PRITORITY_TYPE;
\r
364 "Medium protocol priority.";
\r
367 identity ROUTE_PRITORITY_TYPE_LOW {
\r
368 base ROUTE_PRITORITY_TYPE;
\r
370 "Low protocol priority.";
\r
373 identity ROUTE_STATE_TYPE {
\r
378 identity ROUTE_STATE_TYPE_ACTIVE_ADV {
\r
379 base ROUTE_STATE_TYPE;
\r
381 "The route state is active and advertised.";
\r
384 identity ROUTE_STATE_TYPE_ACTIVE_NOADV {
\r
385 base ROUTE_STATE_TYPE;
\r
387 "The route state is active and not advertised.";
\r
390 identity ROUTE_STATE_TYPE_ACTIVE_ADV_RELIED {
\r
391 base ROUTE_STATE_TYPE;
\r
393 "The route state is active, advertised, and relied.";
\r
396 identity ROUTE_STATE_TYPE_ACTIVE_NOADV_RELIED {
\r
397 base ROUTE_STATE_TYPE;
\r
399 "The route state is active, not advertised, and relied.";
\r
402 identity ROUTE_STATE_TYPE_INVALID_NOADV {
\r
403 base ROUTE_STATE_TYPE;
\r
405 "The route state is invalid and not advertised.";
\r
408 identity ROUTE_STATE_TYPE_INACTIVE_NOADV {
\r
409 base ROUTE_STATE_TYPE;
\r
411 "The route state is inactive and not advertised.";
\r
414 identity ROUTE_FLAG_TYPE {
\r
419 identity ROUTE_FLAG_TYPE_D {
\r
420 base ROUTE_FLAG_TYPE;
\r
422 "A route is advertised to the Forwarding Information Base table.";
\r
425 identity ROUTE_FLAG_TYPE_RD {
\r
426 base ROUTE_FLAG_TYPE;
\r
428 "A route is an iterated route and needs to be advertised to the FIB table.";
\r
431 identity ROUTE_FLAG_TYPE_R {
\r
432 base ROUTE_FLAG_TYPE;
\r
434 "A route is an iterated route.";
\r
437 grouping route-distinguisher-and-target-type {
\r
441 "Identifier of the VPN, which is unique in the entire network";
\r
443 leaf device-identifier-kind {
\r
444 type device-identifier-kind-type;
\r
445 default "DEVICE_IDENTIFIER_KIND_TYPE_NOT_YET_DEFINED";
\r
449 leaf loop-back-ip-address {
\r
451 default "-1.-1.-1.-1";
\r
453 "Only relevant if (deviceIdentifierKind==LOOP_BACK_IP_ADDRESS). Loop back address of the device.";
\r
459 "Only relevant if (deviceIdentifierKind==AS_NUMBER). Autonomous System number of the device.";
\r
465 grouping l-3vpn-configuration-type {
\r
467 type label-mode-type;
\r
469 "Label model used by the VPN.";
\r
471 container route-distinguisher {
\r
472 uses route-distinguisher-and-target-type;
\r
474 "The route distinguisher that should be used for the local VRF or VSI instance when it is signalled via BGP.";
\r
476 list route-target-import-list {
\r
479 uses route-distinguisher-and-target-type;
\r
481 "Route targets that will be imported to this VPN ";
\r
483 list route-target-export-list {
\r
486 uses route-distinguisher-and-target-type;
\r
488 "Route targets that will be tagged to outgoing routes";
\r
490 leaf address-family {
\r
491 type address-family-type;
\r
492 default "ADDRESS_FAMILY_TYPE_NOT_YET_DEFINED";
\r
494 "Address family type for the VPN instance is created for";
\r
497 "L3 VPN instance configuration information.";
\r