| < draft-ietf-rtgwg-routing-types-08.txt | draft-ietf-rtgwg-routing-types-09.txt > | |||
|---|---|---|---|---|
| Network Working Group X. Liu | Network Working Group X. Liu | |||
| Internet-Draft Jabil | Internet-Draft Jabil | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: December 31, 2017 Futurewei Technologies, Inc. | Expires: February 20, 2018 Futurewei Technologies, Inc. | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| C. Hopps | C. Hopps | |||
| Deutsche Telekom | Deutsche Telekom | |||
| L. Berger | L. Berger | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| June 29, 2017 | August 19, 2017 | |||
| Routing Area Common YANG Data Types | Routing Area Common YANG Data Types | |||
| draft-ietf-rtgwg-routing-types-08 | draft-ietf-rtgwg-routing-types-09 | |||
| Abstract | Abstract | |||
| This document defines a collection of common data types using the | This document defines a collection of common data types using the | |||
| YANG data modeling language. These derived common types are designed | YANG data modeling language. These derived common types are designed | |||
| to be imported by other modules defined in the routing area. | to be imported by other modules defined in the routing area. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 39 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on December 31, 2017. | This Internet-Draft will expire on February 20, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 16 ¶ | skipping to change at page 2, line 16 ¶ | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 3. IETF Routing Types YANG Module . . . . . . . . . . . . . . . 6 | 3. IETF Routing Types YANG Module . . . . . . . . . . . . . . . 6 | |||
| 4. IANA Routing Types YANG Module . . . . . . . . . . . . . . . 23 | 4. IANA Routing Types YANG Module . . . . . . . . . . . . . . . 22 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 5.1. IANA-Maintained iana-routing-types Module . . . . . . . . 35 | 5.1. IANA-Maintained iana-routing-types Module . . . . . . . . 34 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 36 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 35 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 36 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 36 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 35 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 37 | 8.2. Informative References . . . . . . . . . . . . . . . . . 36 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 1. Introduction | 1. Introduction | |||
| The YANG [RFC6020] [RFC7950] is a data modeling language used to | The YANG [RFC6020] [RFC7950] is a data modeling language used to | |||
| model configuration data, state data, Remote Procedure Calls, and | model configuration data, state data, Remote Procedure Calls, and | |||
| notifications for network management protocols. The YANG language | notifications for network management protocols. The YANG language | |||
| supports a small set of built-in data types and provides mechanisms | supports a small set of built-in data types and provides mechanisms | |||
| to derive other types from the built-in types. | to derive other types from the built-in types. | |||
| This document introduces a collection of common data types derived | This document introduces a collection of common data types derived | |||
| skipping to change at page 3, line 11 ¶ | skipping to change at page 3, line 11 ¶ | |||
| These include: | These include: | |||
| router-id | router-id | |||
| Router Identifiers are commonly used to identify a nodes in | Router Identifiers are commonly used to identify a nodes in | |||
| routing and other control plane protocols. An example usage of | routing and other control plane protocols. An example usage of | |||
| router-id can be found in [I-D.ietf-ospf-yang]. | router-id can be found in [I-D.ietf-ospf-yang]. | |||
| route-target | route-target | |||
| Route Targets (RTs) are commonly used to control the distribution | Route Targets (RTs) are commonly used to control the distribution | |||
| of virtual routing and forwarding (VRF) information, see | of virtual routing and forwarding (VRF) information, see | |||
| [RFC4364], in support of virtual private networks (VPNs). An | [RFC4364], in support of BGP/MPLS IP virtual private networks | |||
| example usage can be found in [I-D.ietf-bess-l2vpn-yang]. | (VPNs) and BGP/MPLS Ethernet VPNs [RFC7432]. An example usage can | |||
| be found in [I-D.ietf-bess-l2vpn-yang]. | ||||
| ipv6-route-target | ipv6-route-target | |||
| IPv6 Route Targets (RTs) are similar to standard Route Targets | IPv6 Route Targets (RTs) are similar to standard Route Targets | |||
| only they IPv6 Address Specific BGP Extended Communities as | only they IPv6 Address Specific BGP Extended Communities as | |||
| described in [RFC5701]. An IPv6 Route Target is 20 octets and | described in [RFC5701]. An IPv6 Route Target is 20 octets and | |||
| includes an IPv6 address as the global administrator. | includes an IPv6 address as the global administrator. | |||
| route-target-type | route-target-type | |||
| This type defines the import and export rules of Route Targets, as | This type defines the import and export rules of Route Targets, as | |||
| descibed in Section 4.3.1 of [RFC4364]. An example usage can be | descibed in Section 4.3.1 of [RFC4364]. An example usage can be | |||
| skipping to change at page 3, line 36 ¶ | skipping to change at page 3, line 37 ¶ | |||
| Route Distinguishers (RDs) are commonly used to identify separate | Route Distinguishers (RDs) are commonly used to identify separate | |||
| routes in support of virtual private networks (VPNs). For | routes in support of virtual private networks (VPNs). For | |||
| example, in [RFC4364], RDs are commonly used to identify | example, in [RFC4364], RDs are commonly used to identify | |||
| independent VPNs and VRFs, and more generally, to identify | independent VPNs and VRFs, and more generally, to identify | |||
| multiple routes to the same prefix. An example usage can be found | multiple routes to the same prefix. An example usage can be found | |||
| in [I-D.ietf-idr-bgp-model]. | in [I-D.ietf-idr-bgp-model]. | |||
| route-origin | route-origin | |||
| Route Origin is commonly used to indicate the Site of Origin for | Route Origin is commonly used to indicate the Site of Origin for | |||
| Routng and forwarding (VRF) information, see [RFC4364], in support | Routng and forwarding (VRF) information, see [RFC4364], in support | |||
| of virtual private networks (VPNs). An example usage can be found | of BGP/MPLS IP virtual private networks (VPNs) and BGP/MPLS | |||
| in [I-D.ietf-bess-l3vpn-yang]. | Ethernet VPNs [RFC7432]. An example usage can be found in | |||
| [I-D.ietf-bess-l3vpn-yang]. | ||||
| ipv6-route-origin | ipv6-route-origin | |||
| An IPv6 Route Origin would also be used to indicate the Site of | An IPv6 Route Origin would also be used to indicate the Site of | |||
| Origin for Routng and forwarding (VRF) information, see [RFC4364], | Origin for Routng and forwarding (VRF) information, see [RFC4364], | |||
| in support of virtual private networks (VPNs). IPv6 Route Origins | in support of virtual private networks (VPNs). IPv6 Route Origins | |||
| are IPv6 Address Specific BGP Extended Communities as described in | are IPv6 Address Specific BGP Extended Communities as described in | |||
| [RFC5701]. An IPv6 Route Origin is 20 octets and includes an IPv6 | [RFC5701]. An IPv6 Route Origin is 20 octets and includes an IPv6 | |||
| address as the global administrator. | address as the global administrator. | |||
| ipv4-multicast-group-address | ipv4-multicast-group-address | |||
| skipping to change at page 6, line 24 ¶ | skipping to change at page 6, line 28 ¶ | |||
| This grouping defines a reusable collection of schema nodes | This grouping defines a reusable collection of schema nodes | |||
| representing an MPLS label stack [RFC3032]. An example usage can | representing an MPLS label stack [RFC3032]. An example usage can | |||
| be found in [I-D.ietf-mpls-base-yang]. | be found in [I-D.ietf-mpls-base-yang]. | |||
| vpn-route-targets | vpn-route-targets | |||
| This grouping defines a reusable collection of schema nodes | This grouping defines a reusable collection of schema nodes | |||
| representing Route Target import-export rules used in the BGP | representing Route Target import-export rules used in the BGP | |||
| enabled Virtual Private Networks (VPNs). [RFC4364][RFC4664]. An | enabled Virtual Private Networks (VPNs). [RFC4364][RFC4664]. An | |||
| example usage can be found in [I-D.ietf-bess-l2vpn-yang]. | example usage can be found in [I-D.ietf-bess-l2vpn-yang]. | |||
| geo-coordinates | ||||
| This grouping defines a reusable collection of schema nodes | ||||
| representing the Geo-coordinates in IETF models. The schema modes | ||||
| specify the location of an object using the WGS-84 (World Geodetic | ||||
| System) reference coordinate system [WGS84]. This is expected to | ||||
| used in augmentations to routing protocol models such as | ||||
| [I-D.ietf-ospf-yang]. | ||||
| The iana-routing-types model contains common routing types | The iana-routing-types model contains common routing types | |||
| corresponding directly to IANA mappings. These include: | corresponding directly to IANA mappings. These include: | |||
| address-family | address-family | |||
| This type defines values for use in address family identifiers. | This type defines values for use in address family identifiers. | |||
| The values are based on the IANA Address Family Numbers Registry | The values are based on the IANA Address Family Numbers Registry | |||
| [IANA-ADDRESS-FAMILY-REGISTRY]. An example usage can be found in | [IANA-ADDRESS-FAMILY-REGISTRY]. An example usage can be found in | |||
| [I-D.ietf-idr-bgp-model]. | [I-D.ietf-idr-bgp-model]. | |||
| subsequent-address-family | subsequent-address-family | |||
| This type defines values for use in subsequent address family | This type defines values for use in subsequent address family | |||
| (SAFI) identifiers. The values are based on the IANA Subsequent | (SAFI) identifiers. The values are based on the IANA Subsequent | |||
| Address Family Identifiers (SAFI) Parameters Registry | Address Family Identifiers (SAFI) Parameters Registry | |||
| [IANA-SAFI-REGISTRY]. | [IANA-SAFI-REGISTRY]. | |||
| 3. IETF Routing Types YANG Module | 3. IETF Routing Types YANG Module | |||
| <CODE BEGINS> file "ietf-routing-types@2017-06-29.yang" | <CODE BEGINS> file "ietf-routing-types@2017-08-16.yang" | |||
| module ietf-routing-types { | module ietf-routing-types { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; | |||
| prefix rt-types; | prefix rt-types; | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| } | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| organization | } | |||
| "IETF RTGWG - Routing Area Working Group"; | import ietf-inet-types { | |||
| contact | prefix inet; | |||
| "WG Web: <http://tools.ietf.org/wg/rtgwg/> | } | |||
| WG List: <mailto:rtgwg@ietf.org> | ||||
| Editor: Xufeng Lui | organization | |||
| <mailto:Xufeng_Lui@jabail.com> | "IETF RTGWG - Routing Area Working Group"; | |||
| Yingzhen Qu | contact | |||
| <mailto:yingzhen.qu@huawei.com> | "WG Web: <http://tools.ietf.org/wg/rtgwg/> | |||
| Acee Lindem | WG List: <mailto:rtgwg@ietf.org> | |||
| <mailto:acee@cisco.com> | ||||
| Christian Hopps | ||||
| <mailto:chopps@chopps.org> | ||||
| Lou Berger | ||||
| <mailto:lberger@labn.com>"; | ||||
| description | ||||
| "This module contains a collection of YANG data types | ||||
| considered generally useful for routing protocols. | ||||
| Copyright (c) 2017 IETF Trust and the persons | Editor: Xufeng Lui | |||
| identified as authors of the code. All rights reserved. | <mailto:Xufeng_Lui@jabail.com> | |||
| Yingzhen Qu | ||||
| <mailto:yingzhen.qu@huawei.com> | ||||
| Acee Lindem | ||||
| <mailto:acee@cisco.com> | ||||
| Christian Hopps | ||||
| <mailto:chopps@chopps.org> | ||||
| Lou Berger | ||||
| <mailto:lberger@labn.com>"; | ||||
| description | ||||
| "This module contains a collection of YANG data types | ||||
| considered generally useful for routing protocols. | ||||
| Redistribution and use in source and binary forms, with or | Copyright (c) 2017 IETF Trust and the persons | |||
| without modification, is permitted pursuant to, and subject | identified as authors of the code. All rights reserved. | |||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; see | Redistribution and use in source and binary forms, with or | |||
| the RFC itself for full legal notices."; | without modification, is permitted pursuant to, and subject | |||
| reference "RFC XXXX"; | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| revision 2017-06-29 { | This version of this YANG module is part of RFC XXXX; see | |||
| description | the RFC itself for full legal notices."; | |||
| "Initial revision."; | reference "RFC XXXX"; | |||
| reference "RFC TBD: Routing YANG Data Types"; | ||||
| } | ||||
| /*** Identities related to MPLS/GMPLS ***/ | ||||
| identity mpls-label-special-purpose-value { | revision 2017-06-29 { | |||
| description | description | |||
| "Base identity for deriving identities describing | "Initial revision."; | |||
| special-purpose Multiprotocol Label Switching (MPLS) label | reference "RFC TBD: Routing YANG Data Types"; | |||
| values."; | } | |||
| reference | ||||
| "RFC7274: Allocating and Retiring Special-Purpose MPLS | ||||
| Labels."; | ||||
| } | ||||
| identity ipv4-explicit-null-label { | /*** Identities related to MPLS/GMPLS ***/ | |||
| base mpls-label-special-purpose-value; | ||||
| description | ||||
| "This identity represents the IPv4 Explicit NULL Label."; | ||||
| reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | ||||
| } | ||||
| identity router-alert-label { | identity mpls-label-special-purpose-value { | |||
| base mpls-label-special-purpose-value; | description | |||
| description | "Base identity for deriving identities describing | |||
| "This identity represents the Router Alert Label."; | special-purpose Multiprotocol Label Switching (MPLS) label | |||
| reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | values."; | |||
| } | reference | |||
| "RFC7274: Allocating and Retiring Special-Purpose MPLS | ||||
| Labels."; | ||||
| } | ||||
| identity ipv6-explicit-null-label { | identity ipv4-explicit-null-label { | |||
| base mpls-label-special-purpose-value; | base mpls-label-special-purpose-value; | |||
| description | description | |||
| "This identity represents the IPv6 Explicit NULL Label."; | "This identity represents the IPv4 Explicit NULL Label."; | |||
| reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | |||
| } | } | |||
| identity implicit-null-label { | identity router-alert-label { | |||
| base mpls-label-special-purpose-value; | base mpls-label-special-purpose-value; | |||
| description | description | |||
| "This identity represents the Implicit NULL Label."; | "This identity represents the Router Alert Label."; | |||
| reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | |||
| } | } | |||
| identity entropy-label-indicator { | identity ipv6-explicit-null-label { | |||
| base mpls-label-special-purpose-value; | base mpls-label-special-purpose-value; | |||
| description | description | |||
| "This identity represents the Entropy Label Indicator."; | "This identity represents the IPv6 Explicit NULL Label."; | |||
| reference | reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | |||
| "RFC6790: The Use of Entropy Labels in MPLS Forwarding. | } | |||
| Sections 3 and 10.1."; | ||||
| } | ||||
| identity gal-label { | ||||
| base mpls-label-special-purpose-value; | ||||
| description | ||||
| "This identity represents the Generic Associated Channel | ||||
| Label (GAL)."; | ||||
| reference | ||||
| "RFC5586: MPLS Generic Associated Channel. | ||||
| Sections 4 and 10."; | ||||
| } | ||||
| identity oam-alert-label { | identity implicit-null-label { | |||
| base mpls-label-special-purpose-value; | base mpls-label-special-purpose-value; | |||
| description | description | |||
| "This identity represents the OAM Alert Label."; | "This identity represents the Implicit NULL Label."; | |||
| reference | reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; | |||
| "RFC3429: Assignment of the 'OAM Alert Label' for | } | |||
| Multiprotocol Label Switching Architecture (MPLS) | ||||
| Operation and Maintenance (OAM) Functions. | ||||
| Sections 3 and 6."; | ||||
| } | ||||
| identity extension-label { | identity entropy-label-indicator { | |||
| base mpls-label-special-purpose-value; | base mpls-label-special-purpose-value; | |||
| description | description | |||
| "This identity represents the Extension Label."; | "This identity represents the Entropy Label Indicator."; | |||
| reference | reference | |||
| "RFC7274: Allocating and Retiring Special-Purpose MPLS | "RFC6790: The Use of Entropy Labels in MPLS Forwarding. | |||
| Labels. Sections 3.1 and 5."; | Sections 3 and 10.1."; | |||
| } | } | |||
| /*** Collection of types related to routing ***/ | identity gal-label { | |||
| base mpls-label-special-purpose-value; | ||||
| description | ||||
| "This identity represents the Generic Associated Channel | ||||
| Label (GAL)."; | ||||
| reference | ||||
| "RFC5586: MPLS Generic Associated Channel. | ||||
| Sections 4 and 10."; | ||||
| } | ||||
| typedef router-id { | identity oam-alert-label { | |||
| type yang:dotted-quad; | base mpls-label-special-purpose-value; | |||
| description | description | |||
| "A 32-bit number in the dotted quad format assigned to each | "This identity represents the OAM Alert Label."; | |||
| router. This number uniquely identifies the router within | reference | |||
| an Autonomous System."; | "RFC3429: Assignment of the 'OAM Alert Label' for | |||
| } | Multiprotocol Label Switching Architecture (MPLS) | |||
| Operation and Maintenance (OAM) Functions. | ||||
| Sections 3 and 6."; | ||||
| } | ||||
| /*** Collection of types related to VPN ***/ | identity extension-label { | |||
| base mpls-label-special-purpose-value; | ||||
| description | ||||
| "This identity represents the Extension Label."; | ||||
| reference | ||||
| "RFC7274: Allocating and Retiring Special-Purpose MPLS | ||||
| Labels. Sections 3.1 and 5."; | ||||
| } | ||||
| typedef route-target { | /*** Collection of types related to routing ***/ | |||
| type string { | ||||
| pattern | ||||
| '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | ||||
| + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|' | ||||
| + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|' | ||||
| + '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|' | ||||
| + '[0-3]?\d{0,8}\d))|' | ||||
| + '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|' | ||||
| + '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|' | ||||
| + '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|' | ||||
| + '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|' | ||||
| + '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|' | ||||
| + '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):' | ||||
| + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | ||||
| + '[0-5]?\d{0,3}\d))'; | ||||
| } | ||||
| description | ||||
| "A route target is an 8-octet BGP extended community | ||||
| initially identifying a set of sites in a BGP | ||||
| VPN (RFC 4364). However, it has since taken on a more | ||||
| general role in BGP route filtering. | ||||
| A route target consists of three fields: | ||||
| a 2-octet type field, an administrator field, | ||||
| and an assigned number field. | ||||
| According to the data formats for type 0, 1, and 2 defined | ||||
| in RFC4360 and RFC5668, the encoding pattern is defined as: | ||||
| 0:2-octet-asn:4-octet-number | typedef router-id { | |||
| 1:4-octet-ipv4addr:2-octet-number | type yang:dotted-quad; | |||
| 2:4-octet-asn:2-octet-number. | description | |||
| "A 32-bit number in the dotted quad format assigned to each | ||||
| router. This number uniquely identifies the router within | ||||
| an Autonomous System."; | ||||
| } | ||||
| Some valid examples are: 0:100:100, 1:1.1.1.1:100, and | /*** Collection of types related to VPN ***/ | |||
| 2:1234567890:203."; | ||||
| reference | ||||
| "RFC4360: BGP Extended Communities Attribute. | ||||
| RFC5668: 4-Octet AS Specific BGP Extended Community."; | ||||
| } | ||||
| typedef ipv6-route-target { | typedef route-target { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | |||
| + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | + '6[0-4][0-9]{3}|' | |||
| + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' | + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' | |||
| + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | + '42949672[0-8][0-9]|' | |||
| + ':' | + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | |||
| + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | + '42949[0-5][0-9]{4}|' | |||
| + '[0-5]?\d{0,3}\d)'; | + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | |||
| pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | + '42[0-8][0-9]{7}|4[01][0-9]{8}|' | |||
| + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | + '[0-3]?[0-9]{0,8}[0-9]))|' | |||
| + ':' | + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | |||
| + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | |||
| + '[0-5]?\d{0,3}\d)'; | + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | |||
| + '655[0-2][0-9]|' | ||||
| + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||
| + '[0-5]?[0-9]{0,3}[0-9]))|' | ||||
| + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||
| + '4294967[01][0-9]{2}|' | ||||
| + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||
| + '4294[0-8][0-9]{5}|' | ||||
| + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
| + '[0-3]?[0-9]{0,8}[0-9]):' | ||||
| + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
| + '6[0-4][0-9]{3}|' | ||||
| + '[0-5]?[0-9]{0,3}[0-9]))|' | ||||
| + '(6(:[a-fA-F0-9]{2}){6})|' | ||||
| + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||
| + '[0-9a-fA-F]{1,12})'; | ||||
| } | ||||
| description | ||||
| "A route target is an 8-octet BGP extended community | ||||
| initially identifying a set of sites in a BGP | ||||
| VPN (RFC 4364). However, it has since taken on a more | ||||
| general role in BGP route filtering. | ||||
| A route target consists of two or three fields: | ||||
| a 2-octet type field, an administrator field, | ||||
| and, optionally, an assigned number field. | ||||
| } | According to the data formats for type 0, 1, 2, and 6 | |||
| description | defined in RFC4360, RFC5668, and RFC7432, the encoding | |||
| "An IPv6 route target is a 20-octet BGP IPv6 address | pattern is defined as: | |||
| specific extended community serving the same function | ||||
| as a standard 8-octet route target only allowing for | ||||
| an IPv6 address as the global adminstrator. The format | ||||
| is <ipv6-address:2-octet-number>. | ||||
| Some valid examples are: 2001:DB8::1:6544 and | 0:2-octet-asn:4-octet-number | |||
| 2001:DB8::5eb1:791:6b37:17958"; | 1:4-octet-ipv4addr:2-octet-number | |||
| reference | 2:4-octet-asn:2-octet-number. | |||
| "RFC5701: IPv6 Address Specific BGP Extended Community | 6:6-octet-mac-address. | |||
| Attribute"; | ||||
| } | ||||
| typedef route-target-type { | Additionally, a generic pattern is defined for future | |||
| type enumeration { | route target types: | |||
| enum "import" { | ||||
| value 0; | ||||
| description | ||||
| "The route target applies to route import."; | ||||
| } | ||||
| enum "export" { | ||||
| value 1; | ||||
| description | ||||
| "The route target applies to route export."; | ||||
| } | ||||
| enum "both" { | ||||
| value 2; | ||||
| description | ||||
| "The route target applies to both route import and | ||||
| route export."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Indicates the role a route target takes | ||||
| in route filtering."; | ||||
| reference "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; | ||||
| } | ||||
| typedef route-distinguisher { | 2-octet-other-hex-number:6-octet-hex-number | |||
| type string { | ||||
| pattern | ||||
| '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | ||||
| + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|' | ||||
| + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|' | ||||
| + '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|' | ||||
| + '[0-3]?\d{0,8}\d))|' | ||||
| + '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|' | ||||
| + '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|' | ||||
| + '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|' | ||||
| + '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|' | ||||
| + '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|' | ||||
| + '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):' | ||||
| + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | ||||
| + '[0-5]?\d{0,3}\d))|' | ||||
| + '(([3-9a-fA-F]|[1-9a-fA-F][\da-fA-F]{1,3}):' | ||||
| + '[\da-fA-F]{1,12})'; | ||||
| } | ||||
| description | ||||
| "A route distinguisher is an 8-octet value used to distinguish | ||||
| routes from different BGP VPNs (RFC 4364). A route | ||||
| distinguisher consists of three fields: A 2-octet type field, | ||||
| an administrator field, and an assigned number field. | ||||
| According to the data formats for type 0, 1, and 2 defined in | ||||
| RFC4364, the encoding pattern is defined as: | ||||
| 0:2-octet-asn:4-octet-number | Some valid examples are: 0:100:100, 1:1.1.1.1:100, | |||
| 1:4-octet-ipv4addr:2-octet-number | 2:1234567890:203 and 6:26:00:08:92:78:00"; | |||
| 2:4-octet-asn:2-octet-number. | ||||
| 2-octet-other-hex-number:6-octet-hex-number | ||||
| Some valid examples are: 0:100:100, 1:1.1.1.1:100, and | reference | |||
| 2:1234567890:203."; | "RFC4360: BGP Extended Communities Attribute. | |||
| reference "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; | RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| } | RFC5668: 4-Octet AS Specific BGP Extended Community. | |||
| RFC7432: BGP MPLS-Based Ethernet VPN"; | ||||
| } | ||||
| typedef route-origin { | typedef ipv6-route-target { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | |||
| + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|' | + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | |||
| + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|' | + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' | |||
| + '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|' | + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | |||
| + '[0-3]?\d{0,8}\d))|' | + ':' | |||
| + '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|' | + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | |||
| + '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|' | + '6[0-4][0-9]{3}|' | |||
| + '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|' | + '[0-5]?[0-9]{0,3}[0-9])'; | |||
| + '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|' | pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | |||
| + '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|' | + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | |||
| + '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):' | + ':' | |||
| + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | |||
| + '[0-5]?\d{0,3}\d))|' | + '6[0-4][0-9]{3}|' | |||
| + '(([3-9a-fA-F]|[1-9a-fA-F][\da-fA-F]{1,3}):' | + '[0-5]?[0-9]{0,3}[0-9])'; | |||
| + '[\da-fA-F]{1,12})'; | } | |||
| } | description | |||
| description | "An IPv6 route target is a 20-octet BGP IPv6 address | |||
| "A route origin is an 8-octet BGP extended community | specific extended community serving the same function | |||
| identifying the set of sites where the BGP route | as a standard 8-octet route target only allowing for | |||
| originated(RFC 4364). A route origin consists of three | an IPv6 address as the global adminstrator. The format | |||
| fields: A 2-octet type field, an administrator field, | is <ipv6-address:2-octet-number>. | |||
| and an assigned number field. According to the data | ||||
| formats for type 0, 1, and 2 defined in RFC4364, | ||||
| the encoding pattern is defined as: | ||||
| 0:2-octet-asn:4-octet-number | Some valid examples are: 2001:DB8::1:6544 and | |||
| 1:4-octet-ipv4addr:2-octet-number | 2001:DB8::5eb1:791:6b37:17958"; | |||
| 2:4-octet-asn:2-octet-number. | reference | |||
| 2-octet-other-hex-number:6-octet-hex-number | "RFC5701: IPv6 Address Specific BGP Extended Community | |||
| Attribute"; | ||||
| } | ||||
| Some valid examples are: 0:100:100, 1:1.1.1.1:100, and | typedef route-target-type { | |||
| 2:1234567890:203."; | type enumeration { | |||
| reference | enum "import" { | |||
| "RFC4360: BGP Extended Communities Attribute. | value 0; | |||
| RFC4369: BGP/MPLS IP Virtual Private Networks (VPNs) | description | |||
| RFC5668: 4-Octet AS Specific BGP Extended Community."; | "The route target applies to route import."; | |||
| } | } | |||
| enum "export" { | ||||
| value 1; | ||||
| description | ||||
| "The route target applies to route export."; | ||||
| } | ||||
| enum "both" { | ||||
| value 2; | ||||
| description | ||||
| "The route target applies to both route import and | ||||
| route export."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Indicates the role a route target takes | ||||
| in route filtering."; | ||||
| reference "RFC4364: BGP/MPLS IP Virtual Private Networks | ||||
| (VPNs)."; | ||||
| } | ||||
| typedef ipv6-route-origin { | typedef route-distinguisher { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | |||
| + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | + '6[0-4][0-9]{3}|' | |||
| + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' | + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' | |||
| + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | + '42949672[0-8][0-9]|' | |||
| + ':' | + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | |||
| + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | + '42949[0-5][0-9]{4}|' | |||
| + '[0-5]?\d{0,3}\d)'; | + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | |||
| pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | + '42[0-8][0-9]{7}|4[01][0-9]{8}|' | |||
| + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | + '[0-3]?[0-9]{0,8}[0-9]))|' | |||
| + ':' | + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | |||
| + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|' | + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | |||
| + '[0-5]?\d{0,3}\d)'; | + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | |||
| } | + '655[0-2][0-9]|' | |||
| description | + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | |||
| "An IPv6 route origin is a 20-octet BGP IPv6 address | + '[0-5]?[0-9]{0,3}[0-9]))|' | |||
| specific extended community serving the same function | + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | |||
| as a standard 8-octet route only only allowing for | + '4294967[01][0-9]{2}|' | |||
| an IPv6 address as the global adminstrator. The format | + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | |||
| is <ipv6-address:2-octet-number>. | + '4294[0-8][0-9]{5}|' | |||
| + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
| + '[0-3]?[0-9]{0,8}[0-9]):' | ||||
| + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
| + '6[0-4][0-9]{3}|' | ||||
| + '[0-5]?[0-9]{0,3}[0-9]))|' | ||||
| + '(6(:[a-fA-F0-9]{2}){6})|' | ||||
| + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||
| + '[0-9a-fA-F]{1,12})'; | ||||
| } | ||||
| description | ||||
| "A route distinguisher is an 8-octet value used to | ||||
| distinguish routes from different BGP VPNs (RFC 4364). | ||||
| As per RFC 4360, a route distinguisher will have the same | ||||
| format as a route target and will consist of two or three | ||||
| fields including a 2-octet type field, an administrator | ||||
| field, and, optionally, an assigned number field. | ||||
| Some valid examples are: 2001:DB8::1:6544 and | According to the data formats for type 0, 1, 2, and 6 | |||
| 2001:DB8::5eb1:791:6b37:17958"; | defined in RFC4360, RFC5668, and RFC7432, the encoding | |||
| reference | pattern is defined as: | |||
| "RFC5701: IPv6 Address Specific BGP Extended Community | ||||
| Attribute"; | ||||
| } | ||||
| /*** Collection of types common to multicast ***/ | 0:2-octet-asn:4-octet-number | |||
| 1:4-octet-ipv4addr:2-octet-number | ||||
| 2:4-octet-asn:2-octet-number. | ||||
| 6:6-octet-mac-address. | ||||
| typedef ipv4-multicast-group-address { | Additionally, a generic pattern is defined for future | |||
| type inet:ipv4-address { | route discriminator types: | |||
| pattern '(2((2[4-9])|(3[0-9]))\.).*'; | ||||
| } | ||||
| description | ||||
| "This type represents an IPv4 multicast group address, | ||||
| which is in the range from 224.0.0.0 to 239.255.255.255."; | ||||
| reference "RFC1112: Host Extensions for IP Multicasting."; | ||||
| } | ||||
| typedef ipv6-multicast-group-address { | 2-octet-other-hex-number:6-octet-hex-number | |||
| type inet:ipv6-address { | ||||
| pattern | ||||
| '(([fF]{2}[0-9a-fA-F]{2}):).*'; | ||||
| } | ||||
| description | ||||
| "This type represents an IPv6 multicast group address, | ||||
| which is in the range of FF00::/8."; | ||||
| reference | ||||
| "RFC4291: IP Version 6 Addressing Architecture. Sec 2.7. | ||||
| RFC7346: IPv6 Multicast Address Scopes."; | ||||
| } | ||||
| typedef ip-multicast-group-address { | Some valid examples are: 0:100:100, 1:1.1.1.1:100, | |||
| type union { | 2:1234567890:203 and 6:26:00:08:92:78:00"; | |||
| type ipv4-multicast-group-address; | reference | |||
| type ipv6-multicast-group-address; | "RFC4360: BGP Extended Communities Attribute. | |||
| } | RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| description | RFC5668: 4-Octet AS Specific BGP Extended Community. | |||
| "This type represents a version-neutral IP multicast group | RFC7432: BGP MPLS-Based Ethernet VPN"; | |||
| address. The format of the textual representation implies | } | |||
| the IP version."; | ||||
| } | ||||
| typedef ipv4-multicast-source-address { | typedef route-origin { | |||
| type union { | type string { | |||
| type enumeration { | pattern | |||
| enum "*" { | '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | |||
| description | + '6[0-4][0-9]{3}|' | |||
| "Any source address."; | + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' | |||
| } | + '42949672[0-8][0-9]|' | |||
| } | + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | |||
| type inet:ipv4-address; | + '42949[0-5][0-9]{4}|' | |||
| } | + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | |||
| description | + '42[0-8][0-9]{7}|4[01][0-9]{8}|' | |||
| "Multicast source IPv4 address type."; | + '[0-3]?[0-9]{0,8}[0-9]))|' | |||
| } | + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | |||
| + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | ||||
| + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | ||||
| + '655[0-2][0-9]|' | ||||
| + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||
| + '[0-5]?[0-9]{0,3}[0-9]))|' | ||||
| + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||
| + '4294967[01][0-9]{2}|' | ||||
| + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||
| + '4294[0-8][0-9]{5}|' | ||||
| + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
| + '[0-3]?[0-9]{0,8}[0-9]):' | ||||
| + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
| + '6[0-4][0-9]{3}|' | ||||
| + '[0-5]?[0-9]{0,3}[0-9]))|' | ||||
| + '(6:[a-fA-F0-9]{1,2}){6}|' | ||||
| + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||
| + '[0-9a-fA-F]{1,12})'; | ||||
| } | ||||
| description | ||||
| "A route origin is an 8-octet BGP extended community | ||||
| identifying the set of sites where the BGP route | ||||
| originated (RFC 4364). A route target consists of two | ||||
| or three fields: a 2-octet type field, an administrator | ||||
| field, and, optionally, an assigned number field. | ||||
| typedef ipv6-multicast-source-address { | According to the data formats for type 0, 1, 2, and 6 | |||
| type union { | defined in RFC4360, RFC5668, and RFC7432, the encoding | |||
| type enumeration { | pattern is defined as: | |||
| enum "*" { | ||||
| description | ||||
| "Any source address."; | ||||
| } | ||||
| } | ||||
| type inet:ipv6-address; | ||||
| } | ||||
| description | ||||
| "Multicast source IPv6 address type."; | ||||
| } | ||||
| /*** Collection of types common to protocols ***/ | 0:2-octet-asn:4-octet-number | |||
| 1:4-octet-ipv4addr:2-octet-number | ||||
| 2:4-octet-asn:2-octet-number. | ||||
| 6:6-octet-mac-address. | ||||
| typedef bandwidth-ieee-float32 { | Additionally, a generic pattern is defined for future | |||
| type string { | route origin types: | |||
| pattern | ||||
| '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' | ||||
| + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' | ||||
| + '1[01]\d|0?\d?\d)?)'; | ||||
| } | ||||
| description | ||||
| "Bandwidth in IEEE 754 floating point 32-bit binary format: | ||||
| (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), | ||||
| where Exponent uses 8 bits, and Fraction uses 23 bits. | ||||
| The units are octets per second. | ||||
| The encoding format is the external hexadecimal-significant | ||||
| character sequences specified in IEEE 754 and C99. The | ||||
| format is restricted to be normalized, non-negative, and | ||||
| non-fraction: 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D | ||||
| where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are | ||||
| integers in the range of [0..127]. | ||||
| When six hexadecimal digits are used for 'hhhhhh' or 'HHHHHH', | ||||
| the least significant digit must be an even number. | ||||
| 'x' and 'X' indicate hexadecimal; 'p' and 'P' indicate power | ||||
| of two. Some examples are: 0x0p0, 0x1p10, and | ||||
| 0x1.abcde2p+20"; | ||||
| reference | ||||
| "IEEE Std 754-2008: IEEE Standard for Floating-Point | ||||
| Arithmetic."; | ||||
| } | 2-octet-other-hex-number:6-octet-hex-number | |||
| typedef link-access-type { | Some valid examples are: 0:100:100, 1:1.1.1.1:100, | |||
| type enumeration { | 2:1234567890:203 and 6:26:00:08:92:78:00"; | |||
| enum "broadcast" { | reference | |||
| description | "RFC4360: BGP Extended Communities Attribute. | |||
| "Specify broadcast multi-access network."; | RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) | |||
| } | RFC5668: 4-Octet AS Specific BGP Extended Community. | |||
| enum "non-broadcast-multiaccess" { | RFC7432: BGP MPLS-Based Ethernet VPN"; | |||
| description | } | |||
| "Specify Non-Broadcast Multi-Access (NBMA) network."; | ||||
| } | ||||
| enum "point-to-multipoint" { | ||||
| description | ||||
| "Specify point-to-multipoint network."; | ||||
| } | ||||
| enum "point-to-point" { | ||||
| description | ||||
| "Specify point-to-point network."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Link access type."; | ||||
| } | ||||
| typedef timer-multiplier { | typedef ipv6-route-origin { | |||
| type uint8; | type string { | |||
| description | pattern | |||
| "The number of timer value intervals that should be | '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | |||
| interpreted as a failure."; | + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | |||
| } | + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' | |||
| + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | ||||
| + ':' | ||||
| + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
| + '6[0-4][0-9]{3}|' | ||||
| + '[0-5]?[0-9]{0,3}[0-9])'; | ||||
| pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | ||||
| + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | ||||
| + ':' | ||||
| + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
| + '6[0-4][0-9]{3}|' | ||||
| + '[0-5]?[0-9]{0,3}[0-9])'; | ||||
| } | ||||
| description | ||||
| "An IPv6 route origin is a 20-octet BGP IPv6 address | ||||
| specific extended community serving the same function | ||||
| as a standard 8-octet route only only allowing for | ||||
| an IPv6 address as the global adminstrator. The format | ||||
| is <ipv6-address:2-octet-number>. | ||||
| typedef timer-value-seconds16 { | Some valid examples are: 2001:DB8::1:6544 and | |||
| type union { | 2001:DB8::5eb1:791:6b37:17958"; | |||
| type uint16 { | reference | |||
| range "1..65535"; | "RFC5701: IPv6 Address Specific BGP Extended Community | |||
| } | Attribute"; | |||
| type enumeration { | } | |||
| enum "infinity" { | ||||
| description | ||||
| "The timer is set to infinity."; | ||||
| } | ||||
| enum "not-set" { | ||||
| description | ||||
| "The timer is not set."; | ||||
| } | ||||
| } | ||||
| } | ||||
| units "seconds"; | ||||
| description | ||||
| "Timer value type, in seconds (16-bit range)."; | ||||
| } | ||||
| typedef timer-value-seconds32 { | /*** Collection of types common to multicast ***/ | |||
| type union { | ||||
| type uint32 { | ||||
| range "1..4294967295"; | ||||
| } | ||||
| type enumeration { | ||||
| enum "infinity" { | ||||
| description | ||||
| "The timer is set to infinity."; | ||||
| } | ||||
| enum "not-set" { | ||||
| description | ||||
| "The timer is not set."; | ||||
| } | ||||
| } | ||||
| } | ||||
| units "seconds"; | ||||
| description | ||||
| "Timer value type, in seconds (32-bit range)."; | ||||
| } | ||||
| typedef timer-value-milliseconds { | typedef ipv4-multicast-group-address { | |||
| type union { | type inet:ipv4-address { | |||
| type uint32 { | pattern '(2((2[4-9])|(3[0-9]))\.).*'; | |||
| range "1..4294967295"; | } | |||
| } | description | |||
| type enumeration { | "This type represents an IPv4 multicast group address, | |||
| enum "infinity" { | which is in the range from 224.0.0.0 to 239.255.255.255."; | |||
| description | reference "RFC1112: Host Extensions for IP Multicasting."; | |||
| "The timer is set to infinity."; | } | |||
| } | ||||
| enum "not-set" { | ||||
| description | ||||
| "The timer is not set."; | ||||
| } | ||||
| } | ||||
| } | ||||
| units "milliseconds"; | ||||
| description | ||||
| "Timer value type, in milliseconds."; | ||||
| } | ||||
| typedef percentage { | typedef ipv6-multicast-group-address { | |||
| type uint8 { | type inet:ipv6-address { | |||
| range "0..100"; | pattern | |||
| } | '(([fF]{2}[0-9a-fA-F]{2}):).*'; | |||
| description | } | |||
| "Integer indicating a percentage value"; | description | |||
| } | "This type represents an IPv6 multicast group address, | |||
| which is in the range of FF00::/8."; | ||||
| typedef timeticks64 { | reference | |||
| type uint64; | "RFC4291: IP Version 6 Addressing Architecture. Sec 2.7. | |||
| description | RFC7346: IPv6 Multicast Address Scopes."; | |||
| "This type is based on the timeticks type defined in | } | |||
| RFC 6991, but with 64-bit width. It represents the time, | ||||
| modulo 2^64, in hundredths of a second between two epochs."; | ||||
| reference "RFC 6991 - Common YANG Data Types"; | ||||
| } | ||||
| typedef uint24 { | typedef ip-multicast-group-address { | |||
| type uint32 { | type union { | |||
| range "0 .. 16777215"; | type ipv4-multicast-group-address; | |||
| } | type ipv6-multicast-group-address; | |||
| description | } | |||
| "24-bit unsigned integer"; | description | |||
| } | "This type represents a version-neutral IP multicast group | |||
| address. The format of the textual representation implies | ||||
| the IP version."; | ||||
| } | ||||
| /*** Collection of types related to MPLS/GMPLS ***/ | typedef ipv4-multicast-source-address { | |||
| type union { | ||||
| type enumeration { | ||||
| enum "*" { | ||||
| description | ||||
| "Any source address."; | ||||
| } | ||||
| } | ||||
| type inet:ipv4-address; | ||||
| } | ||||
| description | ||||
| "Multicast source IPv4 address type."; | ||||
| } | ||||
| typedef generalized-label { | typedef ipv6-multicast-source-address { | |||
| type binary; | type union { | |||
| description | type enumeration { | |||
| "Generalized label. Nodes sending and receiving the | enum "*" { | |||
| Generalized Label are aware of the link-specific | description | |||
| label context and type."; | "Any source address."; | |||
| reference "RFC3471: Section 3.2"; | } | |||
| } | } | |||
| type inet:ipv6-address; | ||||
| } | ||||
| description | ||||
| "Multicast source IPv6 address type."; | ||||
| } | ||||
| typedef mpls-label-special-purpose { | /*** Collection of types common to protocols ***/ | |||
| type identityref { | ||||
| base mpls-label-special-purpose-value; | ||||
| } | ||||
| description | ||||
| "This type represents the special-purpose Multiprotocol Label | ||||
| Switching (MPLS) label values."; | ||||
| reference | ||||
| "RFC3032: MPLS Label Stack Encoding. | ||||
| RFC7274: Allocating and Retiring Special-Purpose MPLS | ||||
| Labels."; | ||||
| } | ||||
| typedef mpls-label-general-use { | ||||
| type uint32 { | ||||
| range "16..1048575"; | ||||
| } | ||||
| description | ||||
| "The 20-bit label values in an MPLS label stack entry, | ||||
| specified in RFC3032. This label value does not include | ||||
| the encodings of Traffic Class and TTL (time to live). | ||||
| The label range specified by this type is for general use, | ||||
| with special-purpose MPLS label values excluded."; | ||||
| reference "RFC3032: MPLS Label Stack Encoding."; | ||||
| } | ||||
| typedef mpls-label { | typedef bandwidth-ieee-float32 { | |||
| type union { | type string { | |||
| type mpls-label-special-purpose; | pattern | |||
| type mpls-label-general-use; | '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' | |||
| } | + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' | |||
| description | + '1[01][0-9]|0?[0-9]?[0-9])?)'; | |||
| "The 20-bit label values in an MPLS label stack entry, | } | |||
| specified in RFC3032. This label value does not include | description | |||
| the encodings of Traffic Class and TTL (time to live)."; | "Bandwidth in IEEE 754 floating point 32-bit binary format: | |||
| reference "RFC3032: MPLS Label Stack Encoding."; | (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), | |||
| } | where Exponent uses 8 bits, and Fraction uses 23 bits. | |||
| The units are octets per second. | ||||
| The encoding format is the external hexadecimal-significant | ||||
| character sequences specified in IEEE 754 and C99. The | ||||
| format is restricted to be normalized, non-negative, and | ||||
| non-fraction: 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D | ||||
| where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are | ||||
| integers in the range of [0..127]. | ||||
| When six hexadecimal digits are used for 'hhhhhh' or | ||||
| 'HHHHHH', the least significant digit must be an even | ||||
| number. 'x' and 'X' indicate hexadecimal; 'p' and 'P' | ||||
| indicate power of two. Some examples are: 0x0p0, 0x1p10, and | ||||
| 0x1.abcde2p+20"; | ||||
| reference | ||||
| "IEEE Std 754-2008: IEEE Standard for Floating-Point | ||||
| Arithmetic."; | ||||
| } | ||||
| /*** Groupings **/ | typedef link-access-type { | |||
| type enumeration { | ||||
| enum "broadcast" { | ||||
| description | ||||
| "Specify broadcast multi-access network."; | ||||
| } | ||||
| enum "non-broadcast-multiaccess" { | ||||
| description | ||||
| "Specify Non-Broadcast Multi-Access (NBMA) network."; | ||||
| } | ||||
| enum "point-to-multipoint" { | ||||
| description | ||||
| "Specify point-to-multipoint network."; | ||||
| } | ||||
| enum "point-to-point" { | ||||
| description | ||||
| "Specify point-to-point network."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Link access type."; | ||||
| } | ||||
| typedef timer-multiplier { | ||||
| type uint8; | ||||
| description | ||||
| "The number of timer value intervals that should be | ||||
| interpreted as a failure."; | ||||
| } | ||||
| grouping mpls-label-stack { | typedef timer-value-seconds16 { | |||
| description | type union { | |||
| "A grouping that specifies an MPLS label stack."; | type uint16 { | |||
| container mpls-label-stack { | range "1..65535"; | |||
| description | } | |||
| "Container for a list of MPLS label stack entries."; | type enumeration { | |||
| list entry { | enum "infinity" { | |||
| key "id"; | description | |||
| description | "The timer is set to infinity."; | |||
| "List of MPLS label stack entries."; | } | |||
| leaf id { | enum "not-set" { | |||
| type uint8; | description | |||
| description | "The timer is not set."; | |||
| "Identifies the sequence of an MPLS label stack entries. | } | |||
| An entry with smaller ID value is precedes an entry in | } | |||
| the label stack with a smaller ID."; | } | |||
| } | units "seconds"; | |||
| leaf label { | description | |||
| type rt-types:mpls-label; | "Timer value type, in seconds (16-bit range)."; | |||
| description | } | |||
| "Label value."; | ||||
| } | typedef timer-value-seconds32 { | |||
| leaf ttl { | type union { | |||
| type uint8; | type uint32 { | |||
| description | range "1..4294967295"; | |||
| "Time to Live (TTL)."; | } | |||
| reference "RFC3032: MPLS Label Stack Encoding."; | type enumeration { | |||
| } | enum "infinity" { | |||
| leaf traffic-class { | description | |||
| type uint8 { | "The timer is set to infinity."; | |||
| range "0..7"; | } | |||
| } | enum "not-set" { | |||
| description | description | |||
| "Traffic Class (TC)."; | "The timer is not set."; | |||
| reference | } | |||
| "RFC5462: Multiprotocol Label Switching (MPLS) Label | } | |||
| Stack Entry: 'EXP' Field Renamed to 'Traffic Class' | } | |||
| Field."; | units "seconds"; | |||
| } | description | |||
| } | "Timer value type, in seconds (32-bit range)."; | |||
| } | } | |||
| } | typedef timer-value-milliseconds { | |||
| type union { | ||||
| type uint32 { | ||||
| range "1..4294967295"; | ||||
| } | ||||
| type enumeration { | ||||
| enum "infinity" { | ||||
| description | ||||
| "The timer is set to infinity."; | ||||
| } | ||||
| enum "not-set" { | ||||
| description | ||||
| "The timer is not set."; | ||||
| } | ||||
| } | ||||
| } | ||||
| units "milliseconds"; | ||||
| description | ||||
| "Timer value type, in milliseconds."; | ||||
| } | ||||
| grouping vpn-route-targets { | typedef percentage { | |||
| description | type uint8 { | |||
| "A grouping that specifies Route Target import-export rules | range "0..100"; | |||
| used in the BGP enabled Virtual Private Networks (VPNs)."; | } | |||
| reference | description | |||
| "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs). | "Integer indicating a percentage value"; | |||
| RFC4664: Framework for Layer 2 Virtual Private Networks | } | |||
| (L2VPNs)"; | ||||
| list vpn-target { | ||||
| key "route-target"; | ||||
| description | ||||
| "List of Route Targets."; | ||||
| leaf route-target { | ||||
| type rt-types:route-target; | ||||
| description | ||||
| "Route Target value"; | ||||
| } | ||||
| leaf route-target-type { | ||||
| type rt-types:route-target-type; | ||||
| mandatory true; | ||||
| description | ||||
| "Import/export type of the Route Target."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping geo-coordinates { | ||||
| description | ||||
| "Standard grouping for Geo Coordinates | ||||
| in routing information"; | ||||
| container geo-coordinates { | ||||
| description | ||||
| "Container for Geo Coordinates"; | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit U { | ||||
| description | ||||
| "If the U-bit is set, it indicates that | ||||
| the location-uncertainty is specified, If the | ||||
| U-bit is clear, it indicates the | ||||
| location-uncertainty is unspecified."; | ||||
| } | ||||
| bit N { | ||||
| description | ||||
| "If the N-bit is set, it indicates the | ||||
| latitude is north relative to the Equator. If | ||||
| the N-bit is clear, it indicates the latitude | ||||
| is south of the Equator."; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "If the E-bit is set, it indicates the | ||||
| longitute is east of the Prime Meridian. If | ||||
| the E-bit is clear, it indicates the longitude | ||||
| is west of the Prime Meridian."; | ||||
| } | ||||
| bit A { | ||||
| description | ||||
| "If the A-bit is set, it indicates the | ||||
| altitude is specified. If the A-bit is clear, | ||||
| it indicates the altitude is unspecified."; | ||||
| } | ||||
| bit M { | ||||
| description | ||||
| "If the M-bit is set, it indicates the | ||||
| altitude is specified in meters. If the M-bit | ||||
| is clear, it indicates the altitude is | ||||
| specified in centimeters."; | ||||
| } | ||||
| bit R { | ||||
| description | ||||
| "If the R-bit is set, it indicates the | ||||
| radius is specified and the encoding is for a | ||||
| circular area. If the R-bit is clear, it | ||||
| indicates the radius is unspecified and the | ||||
| encoding is for a single point."; | ||||
| } | ||||
| bit K { | ||||
| description | ||||
| "If the R-bit is set, it indicates the | ||||
| radius is specified in kilometers. If the | ||||
| R-bit is clear, it indicates the radius is | ||||
| specified in meters."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Bits defining granularity or semantics | ||||
| of Geo Coordinates fields."; | ||||
| } | ||||
| leaf location-uncertainty { | ||||
| type uint16; | ||||
| description | ||||
| "Number of centimeters of uncertainty for | ||||
| the location."; | ||||
| } | ||||
| leaf latitude-degrees { | ||||
| type uint8 { | ||||
| range "0 .. 90"; | ||||
| } | ||||
| description | ||||
| "Latitude degrees north or south of the | ||||
| Equator (northern or southern hemisphere, | ||||
| respectively)."; | ||||
| } | ||||
| leaf latitude-milliseconds { | ||||
| type uint24 { | ||||
| range "0 .. 3599999"; | ||||
| } | ||||
| description | ||||
| "Latitude millisecond granularity (less | ||||
| than 60 minutes or a single degree)."; | ||||
| } | ||||
| leaf longitude-degrees { | ||||
| type uint8 { | ||||
| range "0 .. 180"; | ||||
| } | ||||
| description | ||||
| "Longitude degrees east or westof the | ||||
| Prime Meridian (eastern or western hemisphere, | ||||
| respectively)."; | ||||
| } | ||||
| leaf longitude-milliseconds { | ||||
| type uint24 { | ||||
| range "0 .. 3599999"; | ||||
| } | ||||
| description | ||||
| "Longitude millisecond granularity (less | ||||
| than 60 minutes or a single degree)."; | ||||
| } | ||||
| leaf altitude { | ||||
| type int32; | ||||
| description | ||||
| "Height relative to sea level in | ||||
| centimeters or meters. A negative height | ||||
| indicates that the location is below sea | ||||
| level."; | ||||
| } | ||||
| leaf radius { | ||||
| type uint16; | ||||
| description | ||||
| "Radius of a circle centered at the | ||||
| specified coordinates. The radius is specified | ||||
| in meters unless the K-bit is specified | ||||
| indicating specification in kilometers. If the | ||||
| radius is specified, the geo-coordinates specify | ||||
| the entire area of the circle defined by the | ||||
| radius and center point."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | typedef timeticks64 { | |||
| type uint64; | ||||
| description | ||||
| "This type is based on the timeticks type defined in | ||||
| RFC 6991, but with 64-bit width. It represents the time, | ||||
| modulo 2^64, in hundredths of a second between two epochs."; | ||||
| reference "RFC 6991 - Common YANG Data Types"; | ||||
| } | ||||
| typedef uint24 { | ||||
| type uint32 { | ||||
| range "0 .. 16777215"; | ||||
| } | ||||
| description | ||||
| "24-bit unsigned integer"; | ||||
| } | ||||
| /*** Collection of types related to MPLS/GMPLS ***/ | ||||
| typedef generalized-label { | ||||
| type binary; | ||||
| description | ||||
| "Generalized label. Nodes sending and receiving the | ||||
| Generalized Label are aware of the link-specific | ||||
| label context and type."; | ||||
| reference "RFC3471: Section 3.2"; | ||||
| } | ||||
| typedef mpls-label-special-purpose { | ||||
| type identityref { | ||||
| base mpls-label-special-purpose-value; | ||||
| } | ||||
| description | ||||
| "This type represents the special-purpose Multiprotocol Label | ||||
| Switching (MPLS) label values."; | ||||
| reference | ||||
| "RFC3032: MPLS Label Stack Encoding. | ||||
| RFC7274: Allocating and Retiring Special-Purpose MPLS | ||||
| Labels."; | ||||
| } | ||||
| typedef mpls-label-general-use { | ||||
| type uint32 { | ||||
| range "16..1048575"; | ||||
| } | ||||
| description | ||||
| "The 20-bit label values in an MPLS label stack entry, | ||||
| specified in RFC3032. This label value does not include | ||||
| the encodings of Traffic Class and TTL (time to live). | ||||
| The label range specified by this type is for general use, | ||||
| with special-purpose MPLS label values excluded."; | ||||
| reference "RFC3032: MPLS Label Stack Encoding."; | ||||
| } | ||||
| typedef mpls-label { | ||||
| type union { | ||||
| type mpls-label-special-purpose; | ||||
| type mpls-label-general-use; | ||||
| } | ||||
| description | ||||
| "The 20-bit label values in an MPLS label stack entry, | ||||
| specified in RFC3032. This label value does not include | ||||
| the encodings of Traffic Class and TTL (time to live)."; | ||||
| reference "RFC3032: MPLS Label Stack Encoding."; | ||||
| } | ||||
| /*** Groupings **/ | ||||
| grouping mpls-label-stack { | ||||
| description | ||||
| "A grouping that specifies an MPLS label stack. List | ||||
| entries are ordered with the first entry being the | ||||
| top of stack, the next entry being the next entry | ||||
| on the stack, and so on."; | ||||
| container mpls-label-stack { | ||||
| description | ||||
| "Container for a list of MPLS label stack entries."; | ||||
| list entry { | ||||
| key "id"; | ||||
| description | ||||
| "List of MPLS label stack entries."; | ||||
| leaf id { | ||||
| type uint8; | ||||
| description | ||||
| "Identifies the entry in a sequence of an MPLS label | ||||
| stack entries. An entry with smaller ID value is | ||||
| precedes an entry in the label stack with a smaller | ||||
| ID. The value of this id has no semantic meaning other | ||||
| than ordering and referencing the entry."; | ||||
| } | ||||
| leaf label { | ||||
| type rt-types:mpls-label; | ||||
| description | ||||
| "Label value."; | ||||
| } | ||||
| leaf ttl { | ||||
| type uint8; | ||||
| description | ||||
| "Time to Live (TTL)."; | ||||
| reference "RFC3032: MPLS Label Stack Encoding."; | ||||
| } | ||||
| leaf traffic-class { | ||||
| type uint8 { | ||||
| range "0..7"; | ||||
| } | ||||
| description | ||||
| "Traffic Class (TC)."; | ||||
| reference | ||||
| "RFC5462: Multiprotocol Label Switching (MPLS) Label | ||||
| Stack Entry: 'EXP' Field Renamed to 'Traffic Class' | ||||
| Field."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping vpn-route-targets { | ||||
| description | ||||
| "A grouping that specifies Route Target import-export rules | ||||
| used in the BGP enabled Virtual Private Networks (VPNs)."; | ||||
| reference | ||||
| "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||
| RFC4664: Framework for Layer 2 Virtual Private Networks | ||||
| (L2VPNs)"; | ||||
| list vpn-target { | ||||
| key "route-target"; | ||||
| description | ||||
| "List of Route Targets."; | ||||
| leaf route-target { | ||||
| type rt-types:route-target; | ||||
| description | ||||
| "Route Target value"; | ||||
| } | ||||
| leaf route-target-type { | ||||
| type rt-types:route-target-type; | ||||
| mandatory true; | ||||
| description | ||||
| "Import/export type of the Route Target."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 4. IANA Routing Types YANG Module | 4. IANA Routing Types YANG Module | |||
| <CODE BEGINS> file "iana-routing-types@2017-06-29.yang" | <CODE BEGINS> file "iana-routing-types@2017-06-29.yang" | |||
| module iana-routing-types { | module iana-routing-types { | |||
| namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; | namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; | |||
| prefix iana-rt-types; | prefix iana-rt-types; | |||
| organization | organization | |||
| "IANA"; | "IANA"; | |||
| skipping to change at page 37, line 21 ¶ | skipping to change at page 36, line 21 ¶ | |||
| "IANA Subsequent Address Family Identities (SAFI) | "IANA Subsequent Address Family Identities (SAFI) | |||
| Parameters Registry", <https://www.iana.org/assignments/ | Parameters Registry", <https://www.iana.org/assignments/ | |||
| safi-namespace/safi-namespace.xhtml#safi-namespace-2>. | safi-namespace/safi-namespace.xhtml#safi-namespace-2>. | |||
| 8.2. Informative References | 8.2. Informative References | |||
| [IEEE754] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE | [IEEE754] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE | |||
| Std 754-2008, August 2008. | Std 754-2008, August 2008. | |||
| [I-D.ietf-bfd-yang] | [I-D.ietf-bfd-yang] | |||
| Rahman, R., Zheng, L., Networks, J., Jethanandani, M., and | Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | |||
| G. Mirsky, "Yang Data Model for Bidirectional Forwarding | G. Mirsky, "YANG Data Model for Bidirectional Forwarding | |||
| Detection (BFD)", draft-ietf-bfd-yang-05 (work in | Detection (BFD)", draft-ietf-bfd-yang-06 (work in | |||
| progress), March 2017. | progress), June 2017. | |||
| [I-D.ietf-idr-bgp-model] | [I-D.ietf-idr-bgp-model] | |||
| Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K., | Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K., | |||
| Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and | Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and | |||
| X. Liu, "BGP Model for Service Provider Networks", draft- | X. Liu, "BGP Model for Service Provider Networks", draft- | |||
| ietf-idr-bgp-model-02 (work in progress), July 2016. | ietf-idr-bgp-model-02 (work in progress), July 2016. | |||
| [I-D.ietf-ospf-yang] | [I-D.ietf-ospf-yang] | |||
| Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | |||
| "Yang Data Model for OSPF Protocol", draft-ietf-ospf- | "Yang Data Model for OSPF Protocol", draft-ietf-ospf- | |||
| yang-07 (work in progress), March 2017. | yang-08 (work in progress), July 2017. | |||
| [I-D.ietf-pim-yang] | [I-D.ietf-pim-yang] | |||
| Liu, X., McAllister, P., Peter, A., Sivakumar, M., Liu, | Liu, X., McAllister, P., Peter, A., Sivakumar, M., Liu, | |||
| Y., and f. hu, "A YANG data model for Protocol-Independent | Y., and f. hu, "A YANG data model for Protocol-Independent | |||
| Multicast (PIM)", draft-ietf-pim-yang-08 (work in | Multicast (PIM)", draft-ietf-pim-yang-08 (work in | |||
| progress), April 2017. | progress), April 2017. | |||
| [I-D.ietf-teas-yang-rsvp] | [I-D.ietf-teas-yang-rsvp] | |||
| Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., | Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., | |||
| and H. Shah, "A YANG Data Model for Resource Reservation | and H. Shah, "A YANG Data Model for Resource Reservation | |||
| Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in | Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in | |||
| progress), March 2017. | progress), March 2017. | |||
| [I-D.ietf-teas-yang-te] | [I-D.ietf-teas-yang-te] | |||
| Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and | |||
| I. Bryskin, "A YANG Data Model for Traffic Engineering | I. Bryskin, "A YANG Data Model for Traffic Engineering | |||
| Tunnels and Interfaces", draft-ietf-teas-yang-te-06 (work | Tunnels and Interfaces", draft-ietf-teas-yang-te-08 (work | |||
| in progress), March 2017. | in progress), July 2017. | |||
| [I-D.ietf-bess-l2vpn-yang] | [I-D.ietf-bess-l2vpn-yang] | |||
| Shah, H., Brissette, P., Chen, I., Hussain, I., Wen, B., | Shah, H., Brissette, P., Chen, I., Hussain, I., Wen, B., | |||
| and K. Tiruveedhula, "YANG Data Model for MPLS-based | and K. Tiruveedhula, "YANG Data Model for MPLS-based | |||
| L2VPN", draft-ietf-bess-l2vpn-yang-05 (work in progress), | L2VPN", draft-ietf-bess-l2vpn-yang-06 (work in progress), | |||
| March 2017. | June 2017. | |||
| [I-D.ietf-bess-l3vpn-yang] | [I-D.ietf-bess-l3vpn-yang] | |||
| Jain, D., Patel, K., Brissette, P., Li, Z., Zhuang, S., | Jain, D., Patel, K., Brissette, P., Li, Z., Zhuang, S., | |||
| Liu, X., Haas, J., Esale, S., and B. Wen, "Yang Data Model | Liu, X., Haas, J., Esale, S., and B. Wen, "Yang Data Model | |||
| for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang-01 (work | for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang-01 (work | |||
| in progress), April 2017. | in progress), April 2017. | |||
| [I-D.ietf-mpls-base-yang] | [I-D.ietf-mpls-base-yang] | |||
| Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., | Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., | |||
| Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data | Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data | |||
| Model for MPLS Base", draft-ietf-mpls-base-yang-04 (work | Model for MPLS Base", draft-ietf-mpls-base-yang-05 (work | |||
| in progress), March 2017. | in progress), July 2017. | |||
| [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | |||
| Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | |||
| Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | |||
| <http://www.rfc-editor.org/info/rfc3032>. | <http://www.rfc-editor.org/info/rfc3032>. | |||
| [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., | [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., | |||
| and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP | and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP | |||
| Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, | Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, | |||
| <http://www.rfc-editor.org/info/rfc3209>. | <http://www.rfc-editor.org/info/rfc3209>. | |||
| skipping to change at page 39, line 18 ¶ | skipping to change at page 38, line 18 ¶ | |||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
| <http://www.rfc-editor.org/info/rfc5880>. | <http://www.rfc-editor.org/info/rfc5880>. | |||
| [RFC7274] Kompella, K., Andersson, L., and A. Farrel, "Allocating | [RFC7274] Kompella, K., Andersson, L., and A. Farrel, "Allocating | |||
| and Retiring Special-Purpose MPLS Labels", RFC 7274, | and Retiring Special-Purpose MPLS Labels", RFC 7274, | |||
| DOI 10.17487/RFC7274, June 2014, | DOI 10.17487/RFC7274, June 2014, | |||
| <http://www.rfc-editor.org/info/rfc7274>. | <http://www.rfc-editor.org/info/rfc7274>. | |||
| [WGS84] National Imagery and Mapping Agency, "Department of | [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., | |||
| Defense World Geodetic System 1984, Third Edition", | Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based | |||
| NIMA TR83500.2, January 2000. | Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February | |||
| 2015, <http://www.rfc-editor.org/info/rfc7432>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Xufeng Liu | Xufeng Liu | |||
| Jabil | Jabil | |||
| 8281 Greensboro Drive, Suite 200 | 8281 Greensboro Drive, Suite 200 | |||
| McLean VA 22102 | McLean VA 22102 | |||
| USA | USA | |||
| EMail: Xufeng_Liu@jabil.com | EMail: Xufeng_Liu@jabil.com | |||
| End of changes. 74 change blocks. | ||||
| 783 lines changed or deleted | 731 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||