idnits 2.17.00 (12 Aug 2021) /tmp/idnits10253/draft-ietf-rtgwg-routing-types-10.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 2 instances of lines with multicast IPv4 addresses in the document. If these are generic example addresses, they should be changed to use the 233.252.0.x range defined in RFC 5771 Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 579 has weird spacing: '...cluding a 2-o...' -- The document date (September 2, 2017) is 1721 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-ADDRESS-FAMILY-REGISTRY' -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-SAFI-REGISTRY' == Outdated reference: draft-ietf-bfd-yang has been published as RFC 9127 == Outdated reference: A later version (-13) exists of draft-ietf-idr-bgp-model-02 == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-08 == Outdated reference: A later version (-17) exists of draft-ietf-pim-yang-08 == Outdated reference: A later version (-17) exists of draft-ietf-teas-yang-rsvp-07 == Outdated reference: A later version (-29) exists of draft-ietf-teas-yang-te-08 == Outdated reference: A later version (-10) exists of draft-ietf-bess-l2vpn-yang-06 == Outdated reference: A later version (-05) exists of draft-ietf-bess-l3vpn-yang-01 == Outdated reference: draft-ietf-mpls-base-yang has been published as RFC 8960 Summary: 0 errors (**), 0 flaws (~~), 12 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group X. Liu 3 Internet-Draft Jabil 4 Intended status: Standards Track Y. Qu 5 Expires: March 6, 2018 Futurewei Technologies, Inc. 6 A. Lindem 7 Cisco Systems 8 C. Hopps 9 Deutsche Telekom 10 L. Berger 11 LabN Consulting, L.L.C. 12 September 2, 2017 14 Routing Area Common YANG Data Types 15 draft-ietf-rtgwg-routing-types-10 17 Abstract 19 This document defines a collection of common data types using the 20 YANG data modeling language. These derived common types are designed 21 to be imported by other modules defined in the routing area. 23 Status of This Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at http://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on March 6, 2018. 40 Copyright Notice 42 Copyright (c) 2017 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 58 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 59 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 60 3. IETF Routing Types YANG Module . . . . . . . . . . . . . . . 6 61 4. IANA Routing Types YANG Module . . . . . . . . . . . . . . . 22 62 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 63 5.1. IANA-Maintained iana-routing-types Module . . . . . . . . 32 64 6. Security Considerations . . . . . . . . . . . . . . . . . . . 33 65 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 33 66 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 67 8.1. Normative References . . . . . . . . . . . . . . . . . . 34 68 8.2. Informative References . . . . . . . . . . . . . . . . . 34 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 71 1. Introduction 73 The YANG [RFC6020] [RFC7950] is a data modeling language used to 74 model configuration data, state data, Remote Procedure Calls, and 75 notifications for network management protocols. The YANG language 76 supports a small set of built-in data types and provides mechanisms 77 to derive other types from the built-in types. 79 This document introduces a collection of common data types derived 80 from the built-in YANG data types. The derived types are designed to 81 be the common types applicable for modeling in the routing area. 83 1.1. Terminology 85 The terminology for describing YANG data models is found in 86 [RFC7950]. 88 2. Overview 90 This document defines the two models for common routing types, ietf- 91 routing-types and iana-routing-types. The only module imports are 92 from [RFC6991]. The ietf-routing-types model contains common routing 93 types other than those corresponding directly to IANA mappings. 94 These include: 96 router-id 97 Router Identifiers are commonly used to identify a nodes in 98 routing and other control plane protocols. An example usage of 99 router-id can be found in [I-D.ietf-ospf-yang]. 101 route-target 102 Route Targets (RTs) are commonly used to control the distribution 103 of virtual routing and forwarding (VRF) information, see 104 [RFC4364], in support of BGP/MPLS IP virtual private networks 105 (VPNs) and BGP/MPLS Ethernet VPNs [RFC7432]. An example usage can 106 be found in [I-D.ietf-bess-l2vpn-yang]. 108 ipv6-route-target 109 IPv6 Route Targets (RTs) are similar to standard Route Targets 110 only they IPv6 Address Specific BGP Extended Communities as 111 described in [RFC5701]. An IPv6 Route Target is 20 octets and 112 includes an IPv6 address as the global administrator. 114 route-target-type 115 This type defines the import and export rules of Route Targets, as 116 descibed in Section 4.3.1 of [RFC4364]. An example usage can be 117 found in [I-D.ietf-idr-bgp-model]. 119 route-distinguisher 120 Route Distinguishers (RDs) are commonly used to identify separate 121 routes in support of virtual private networks (VPNs). For 122 example, in [RFC4364], RDs are commonly used to identify 123 independent VPNs and VRFs, and more generally, to identify 124 multiple routes to the same prefix. An example usage can be found 125 in [I-D.ietf-idr-bgp-model]. 127 route-origin 128 Route Origin is commonly used to indicate the Site of Origin for 129 Routng and forwarding (VRF) information, see [RFC4364], in support 130 of BGP/MPLS IP virtual private networks (VPNs) and BGP/MPLS 131 Ethernet VPNs [RFC7432]. An example usage can be found in 132 [I-D.ietf-bess-l3vpn-yang]. 134 ipv6-route-origin 135 An IPv6 Route Origin would also be used to indicate the Site of 136 Origin for Routng and forwarding (VRF) information, see [RFC4364], 137 in support of virtual private networks (VPNs). IPv6 Route Origins 138 are IPv6 Address Specific BGP Extended Communities as described in 139 [RFC5701]. An IPv6 Route Origin is 20 octets and includes an IPv6 140 address as the global administrator. 142 ipv4-multicast-group-address 143 This type defines the representation of an IPv4 multicast group 144 address, which is in the range from 224.0.0.0 to 239.255.255.255. 145 An example usage can be found in [I-D.ietf-pim-yang]. 147 ipv6-multicast-group-address 148 This type defines the representation of an IPv6 multicast group 149 address, which is in the range of FF00::/8. An example usage can 150 be found in [I-D.ietf-pim-yang]. 152 ip-multicast-group-address 153 This type represents an IP multicast group address and is IP 154 version neutral. The format of the textual representation implies 155 the IP version. An example usage can be found in 156 [I-D.ietf-pim-yang]. 158 ipv4-multicast-source-address 159 IPv4 source address type for use in multicast control protocols. 160 This type also allows the indication of wildcard sources, i.e., 161 "*". An example of where this type may/will be used is 162 [I-D.ietf-pim-yang]. 164 ipv6-multicast-source-address 165 IPv6 source address type for use in multicast control protocols. 166 This type also allows the indication of wildcard sources, i.e., 167 "*". An example of where this type may/will be used is 168 [I-D.ietf-pim-yang]. 170 bandwidth-ieee-float32 171 Bandwidth in IEEE 754 floating point 32-bit binary format 172 [IEEE754]. Commonly used in Traffic Engineering control plane 173 protocols. An example of where this type may/will be used is 174 [I-D.ietf-ospf-yang]. 176 link-access-type 177 This type identifies the IGP link type. An example of where this 178 type may/will be used is [I-D.ietf-ospf-yang]. 180 timer-multiplier 181 This type is used in conjunction with a timer-value type. It is 182 generally used to indicate define the number of timer-value 183 intervals that may expire before a specific event must occur. 184 Examples of this include the arrival of any BFD packets, see 185 [RFC5880] Section 6.8.4, or hello_interval in [RFC3209]. Example 186 of where this type may/will be used is [I-D.ietf-idr-bgp-model] 187 and [I-D.ietf-teas-yang-rsvp]. 189 timer-value-seconds16 190 This type covers timers which can be set in seconds, not set, or 191 set to infinity. This type supports a range of values that can be 192 represented in a uint16 (2 octets). An example of where this type 193 may/will be used is [I-D.ietf-ospf-yang]. 195 timer-value-seconds32 196 This type covers timers which can be set in seconds, not set, or 197 set to infinity. This type supports a range of values that can be 198 represented in a uint32 (4 octets). An example of where this type 199 may/will be used is [I-D.ietf-teas-yang-rsvp]. 201 timer-value-milliseconds 202 This type covers timers which can be set in milliseconds, not set, 203 or set to infinity. This type supports a range of values that can 204 be represented in a uint32 (4 octets). Examples of where this 205 type may/will be used include [I-D.ietf-teas-yang-rsvp] and 206 [I-D.ietf-bfd-yang]. 208 percentage 209 This type defines a percentage with a range of 0-100%. An example 210 usage can be found in [I-D.ietf-idr-bgp-model]. 212 timeticks64 213 This type is based on the timeticks type defined in [RFC6991] but 214 with 64-bit precision. It represents the time in hundredths of a 215 second between two epochs. An example usage can be found in 216 [I-D.ietf-idr-bgp-model]. 218 uint24 219 This type defines a 24-bit unsigned integer. It is used by 220 target="I-D.ietf-ospf-yang"/>. 222 generalized-label 223 This type represents a generalized label for Generalized Multi- 224 Protocol Label Switching (GMPLS) [RFC3471]. The Generalized Label 225 does not identify its type, which is known from the context. An 226 example usage can be found in [I-D.ietf-teas-yang-te]. 228 mpls-label-special-purpose 229 This type represents the special-purpose Multiprotocol Label 230 Switching (MPLS) label values [RFC7274]. An example usage can be 231 found in [I-D.ietf-mpls-base-yang]. 233 mpls-label-general-use 234 The 20 bits label values in an MPLS label stack entry, specified 235 in [RFC3032]. This label value does not include the encodings of 236 Traffic Class and TTL (time to live). The label range specified 237 by this type is for general use, with special-purpose MPLS label 238 values excluded. An example usage can be found in 239 [I-D.ietf-mpls-base-yang]. 241 mpls-label 242 The 20 bits label values in an MPLS label stack entry, specified 243 in [RFC3032]. This label value does not include the encodings of 244 Traffic Class and TTL (time to live). The label range specified 245 by this type covers the general use values and the special-purpose 246 label values. An example usage can be found in 247 [I-D.ietf-mpls-base-yang]. 249 This document defines the following YANG groupings: 251 mpls-label-stack 252 This grouping defines a reusable collection of schema nodes 253 representing an MPLS label stack [RFC3032]. An example usage can 254 be found in [I-D.ietf-mpls-base-yang]. 256 vpn-route-targets 257 This grouping defines a reusable collection of schema nodes 258 representing Route Target import-export rules used in the BGP 259 enabled Virtual Private Networks (VPNs). [RFC4364][RFC4664]. An 260 example usage can be found in [I-D.ietf-bess-l2vpn-yang]. 262 The iana-routing-types model contains common routing types 263 corresponding directly to IANA mappings. These include: 265 address-family 266 This type defines values for use in address family identifiers. 267 The values are based on the IANA Address Family Numbers Registry 268 [IANA-ADDRESS-FAMILY-REGISTRY]. An example usage can be found in 269 [I-D.ietf-idr-bgp-model]. 271 subsequent-address-family 272 This type defines values for use in subsequent address family 273 (SAFI) identifiers. The values are based on the IANA Subsequent 274 Address Family Identifiers (SAFI) Parameters Registry 275 [IANA-SAFI-REGISTRY]. 277 3. IETF Routing Types YANG Module 279 file "ietf-routing-types@2017-09-02.yang" 280 module ietf-routing-types { 281 namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; 282 prefix rt-types; 284 import ietf-yang-types { 285 prefix yang; 287 } 288 import ietf-inet-types { 289 prefix inet; 290 } 292 organization 293 "IETF RTGWG - Routing Area Working Group"; 294 contact 295 "WG Web: 296 WG List: 298 Editor: Xufeng Liu 299 300 Yingzhen Qu 301 302 Acee Lindem 303 304 Christian Hopps 305 306 Lou Berger 307 "; 308 description 309 "This module contains a collection of YANG data types 310 considered generally useful for routing protocols. 312 Copyright (c) 2017 IETF Trust and the persons 313 identified as authors of the code. All rights reserved. 315 Redistribution and use in source and binary forms, with or 316 without modification, is permitted pursuant to, and subject 317 to the license terms contained in, the Simplified BSD License 318 set forth in Section 4.c of the IETF Trust's Legal Provisions 319 Relating to IETF Documents 320 (http://trustee.ietf.org/license-info). 322 This version of this YANG module is part of RFC XXXX; see 323 the RFC itself for full legal notices."; 324 reference "RFC XXXX"; 326 revision 2017-09-02 { 327 description "Initial revision."; 328 reference "RFC TBD: Routing YANG Data Types"; 329 } 331 /*** Identities related to MPLS/GMPLS ***/ 333 identity mpls-label-special-purpose-value { 334 description 335 "Base identity for deriving identities describing 336 special-purpose Multiprotocol Label Switching (MPLS) label 337 values."; 338 reference 339 "RFC7274: Allocating and Retiring Special-Purpose MPLS 340 Labels."; 341 } 343 identity ipv4-explicit-null-label { 344 base mpls-label-special-purpose-value; 345 description 346 "This identity represents the IPv4 Explicit NULL Label."; 347 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 348 } 350 identity router-alert-label { 351 base mpls-label-special-purpose-value; 352 description 353 "This identity represents the Router Alert Label."; 354 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 355 } 357 identity ipv6-explicit-null-label { 358 base mpls-label-special-purpose-value; 359 description 360 "This identity represents the IPv6 Explicit NULL Label."; 361 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 362 } 364 identity implicit-null-label { 365 base mpls-label-special-purpose-value; 366 description 367 "This identity represents the Implicit NULL Label."; 368 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 369 } 371 identity entropy-label-indicator { 372 base mpls-label-special-purpose-value; 373 description 374 "This identity represents the Entropy Label Indicator."; 375 reference 376 "RFC6790: The Use of Entropy Labels in MPLS Forwarding. 377 Sections 3 and 10.1."; 378 } 380 identity gal-label { 381 base mpls-label-special-purpose-value; 382 description 383 "This identity represents the Generic Associated Channel 384 Label (GAL)."; 385 reference 386 "RFC5586: MPLS Generic Associated Channel. 387 Sections 4 and 10."; 388 } 390 identity oam-alert-label { 391 base mpls-label-special-purpose-value; 392 description 393 "This identity represents the OAM Alert Label."; 394 reference 395 "RFC3429: Assignment of the 'OAM Alert Label' for 396 Multiprotocol Label Switching Architecture (MPLS) 397 Operation and Maintenance (OAM) Functions. 398 Sections 3 and 6."; 399 } 401 identity extension-label { 402 base mpls-label-special-purpose-value; 403 description 404 "This identity represents the Extension Label."; 405 reference 406 "RFC7274: Allocating and Retiring Special-Purpose MPLS 407 Labels. Sections 3.1 and 5."; 408 } 410 /*** Collection of types related to routing ***/ 412 typedef router-id { 413 type yang:dotted-quad; 414 description 415 "A 32-bit number in the dotted quad format assigned to each 416 router. This number uniquely identifies the router within 417 an Autonomous System."; 418 } 420 /*** Collection of types related to VPN ***/ 422 typedef route-target { 423 type string { 424 pattern 425 '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 426 + '6[0-4][0-9]{3}|' 427 + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' 428 + '42949672[0-8][0-9]|' 429 + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' 430 + '42949[0-5][0-9]{4}|' 431 + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' 432 + '42[0-8][0-9]{7}|4[01][0-9]{8}|' 433 + '[0-3]?[0-9]{0,8}[0-9]))|' 434 + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' 435 + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' 436 + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' 437 + '655[0-2][0-9]|' 438 + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' 439 + '[0-5]?[0-9]{0,3}[0-9]))|' 440 + '(2:(429496729[0-5]|42949672[0-8][0-9]|' 441 + '4294967[01][0-9]{2}|' 442 + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' 443 + '4294[0-8][0-9]{5}|' 444 + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' 445 + '[0-3]?[0-9]{0,8}[0-9]):' 446 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 447 + '6[0-4][0-9]{3}|' 448 + '[0-5]?[0-9]{0,3}[0-9]))|' 449 + '(6(:[a-fA-F0-9]{2}){6})|' 450 + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' 451 + '[0-9a-fA-F]{1,12})'; 452 } 453 description 454 "A route target is an 8-octet BGP extended community 455 initially identifying a set of sites in a BGP 456 VPN (RFC 4364). However, it has since taken on a more 457 general role in BGP route filtering. 458 A route target consists of two or three fields: 459 a 2-octet type field, an administrator field, 460 and, optionally, an assigned number field. 462 According to the data formats for type 0, 1, 2, and 6 463 defined in RFC4360, RFC5668, and RFC7432, the encoding 464 pattern is defined as: 466 0:2-octet-asn:4-octet-number 467 1:4-octet-ipv4addr:2-octet-number 468 2:4-octet-asn:2-octet-number. 469 6:6-octet-mac-address. 471 Additionally, a generic pattern is defined for future 472 route target types: 474 2-octet-other-hex-number:6-octet-hex-number 476 Some valid examples are: 0:100:100, 1:1.1.1.1:100, 477 2:1234567890:203 and 6:26:00:08:92:78:00"; 478 reference 479 "RFC4360: BGP Extended Communities Attribute. 480 RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) 481 RFC5668: 4-Octet AS Specific BGP Extended Community. 482 RFC7432: BGP MPLS-Based Ethernet VPN"; 483 } 485 typedef ipv6-route-target { 486 type string { 487 pattern 488 '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' 489 + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' 490 + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' 491 + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' 492 + ':' 493 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 494 + '6[0-4][0-9]{3}|' 495 + '[0-5]?[0-9]{0,3}[0-9])'; 496 pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' 497 + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' 498 + ':' 499 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 500 + '6[0-4][0-9]{3}|' 501 + '[0-5]?[0-9]{0,3}[0-9])'; 502 } 503 description 504 "An IPv6 route target is a 20-octet BGP IPv6 address 505 specific extended community serving the same function 506 as a standard 8-octet route target only allowing for 507 an IPv6 address as the global adminstrator. The format 508 is . 510 Some valid examples are: 2001:DB8::1:6544 and 511 2001:DB8::5eb1:791:6b37:17958"; 512 reference 513 "RFC5701: IPv6 Address Specific BGP Extended Community 514 Attribute"; 515 } 517 typedef route-target-type { 518 type enumeration { 519 enum "import" { 520 value 0; 521 description 522 "The route target applies to route import."; 523 } 524 enum "export" { 525 value 1; 526 description 527 "The route target applies to route export."; 528 } 529 enum "both" { 530 value 2; 531 description 532 "The route target applies to both route import and 533 route export."; 534 } 535 } 536 description 537 "Indicates the role a route target takes 538 in route filtering."; 539 reference "RFC4364: BGP/MPLS IP Virtual Private Networks 540 (VPNs)."; 541 } 543 typedef route-distinguisher { 544 type string { 545 pattern 546 '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 547 + '6[0-4][0-9]{3}|' 548 + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' 549 + '42949672[0-8][0-9]|' 550 + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' 551 + '42949[0-5][0-9]{4}|' 552 + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' 553 + '42[0-8][0-9]{7}|4[01][0-9]{8}|' 554 + '[0-3]?[0-9]{0,8}[0-9]))|' 555 + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' 556 + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' 557 + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' 558 + '655[0-2][0-9]|' 559 + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' 560 + '[0-5]?[0-9]{0,3}[0-9]))|' 561 + '(2:(429496729[0-5]|42949672[0-8][0-9]|' 562 + '4294967[01][0-9]{2}|' 563 + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' 564 + '4294[0-8][0-9]{5}|' 565 + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' 566 + '[0-3]?[0-9]{0,8}[0-9]):' 567 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 568 + '6[0-4][0-9]{3}|' 569 + '[0-5]?[0-9]{0,3}[0-9]))|' 570 + '(6(:[a-fA-F0-9]{2}){6})|' 571 + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' 572 + '[0-9a-fA-F]{1,12})'; 573 } 574 description 575 "A route distinguisher is an 8-octet value used to 576 distinguish routes from different BGP VPNs (RFC 4364). 577 As per RFC 4360, a route distinguisher will have the same 578 format as a route target and will consist of two or three 579 fields including a 2-octet type field, an administrator 580 field, and, optionally, an assigned number field. 582 According to the data formats for type 0, 1, 2, and 6 583 defined in RFC4360, RFC5668, and RFC7432, the encoding 584 pattern is defined as: 586 0:2-octet-asn:4-octet-number 587 1:4-octet-ipv4addr:2-octet-number 588 2:4-octet-asn:2-octet-number. 589 6:6-octet-mac-address. 591 Additionally, a generic pattern is defined for future 592 route discriminator types: 594 2-octet-other-hex-number:6-octet-hex-number 596 Some valid examples are: 0:100:100, 1:1.1.1.1:100, 597 2:1234567890:203 and 6:26:00:08:92:78:00"; 598 reference 599 "RFC4360: BGP Extended Communities Attribute. 600 RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) 601 RFC5668: 4-Octet AS Specific BGP Extended Community. 602 RFC7432: BGP MPLS-Based Ethernet VPN"; 603 } 605 typedef route-origin { 606 type string { 607 pattern 608 '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 609 + '6[0-4][0-9]{3}|' 610 + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' 611 + '42949672[0-8][0-9]|' 612 + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' 613 + '42949[0-5][0-9]{4}|' 614 + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' 615 + '42[0-8][0-9]{7}|4[01][0-9]{8}|' 616 + '[0-3]?[0-9]{0,8}[0-9]))|' 617 + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' 618 + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' 619 + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' 620 + '655[0-2][0-9]|' 621 + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' 622 + '[0-5]?[0-9]{0,3}[0-9]))|' 623 + '(2:(429496729[0-5]|42949672[0-8][0-9]|' 624 + '4294967[01][0-9]{2}|' 625 + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' 626 + '4294[0-8][0-9]{5}|' 627 + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' 628 + '[0-3]?[0-9]{0,8}[0-9]):' 629 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 630 + '6[0-4][0-9]{3}|' 631 + '[0-5]?[0-9]{0,3}[0-9]))|' 632 + '(6(:[a-fA-F0-9]{2}){6})|' 633 + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' 634 + '[0-9a-fA-F]{1,12})'; 635 } 636 description 637 "A route origin is an 8-octet BGP extended community 638 identifying the set of sites where the BGP route 639 originated (RFC 4364). A route target consists of two 640 or three fields: a 2-octet type field, an administrator 641 field, and, optionally, an assigned number field. 643 According to the data formats for type 0, 1, 2, and 6 644 defined in RFC4360, RFC5668, and RFC7432, the encoding 645 pattern is defined as: 647 0:2-octet-asn:4-octet-number 648 1:4-octet-ipv4addr:2-octet-number 649 2:4-octet-asn:2-octet-number. 650 6:6-octet-mac-address. 652 Additionally, a generic pattern is defined for future 653 route origin types: 655 2-octet-other-hex-number:6-octet-hex-number 657 Some valid examples are: 0:100:100, 1:1.1.1.1:100, 658 2:1234567890:203 and 6:26:00:08:92:78:00"; 659 reference 660 "RFC4360: BGP Extended Communities Attribute. 661 RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) 662 RFC5668: 4-Octet AS Specific BGP Extended Community. 663 RFC7432: BGP MPLS-Based Ethernet VPN"; 664 } 666 typedef ipv6-route-origin { 667 type string { 668 pattern 669 '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' 670 + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' 671 + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' 672 + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' 673 + ':' 674 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 675 + '6[0-4][0-9]{3}|' 676 + '[0-5]?[0-9]{0,3}[0-9])'; 677 pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' 678 + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' 679 + ':' 680 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 681 + '6[0-4][0-9]{3}|' 682 + '[0-5]?[0-9]{0,3}[0-9])'; 683 } 684 description 685 "An IPv6 route origin is a 20-octet BGP IPv6 address 686 specific extended community serving the same function 687 as a standard 8-octet route only only allowing for 688 an IPv6 address as the global adminstrator. The format 689 is . 691 Some valid examples are: 2001:DB8::1:6544 and 692 2001:DB8::5eb1:791:6b37:17958"; 693 reference 694 "RFC5701: IPv6 Address Specific BGP Extended Community 695 Attribute"; 696 } 698 /*** Collection of types common to multicast ***/ 700 typedef ipv4-multicast-group-address { 701 type inet:ipv4-address { 702 pattern '(2((2[4-9])|(3[0-9]))\.).*'; 703 } 704 description 705 "This type represents an IPv4 multicast group address, 706 which is in the range from 224.0.0.0 to 239.255.255.255."; 707 reference "RFC1112: Host Extensions for IP Multicasting."; 708 } 710 typedef ipv6-multicast-group-address { 711 type inet:ipv6-address { 712 pattern 713 '(([fF]{2}[0-9a-fA-F]{2}):).*'; 714 } 715 description 716 "This type represents an IPv6 multicast group address, 717 which is in the range of FF00::/8."; 718 reference 719 "RFC4291: IP Version 6 Addressing Architecture. Sec 2.7. 720 RFC7346: IPv6 Multicast Address Scopes."; 721 } 723 typedef ip-multicast-group-address { 724 type union { 725 type ipv4-multicast-group-address; 726 type ipv6-multicast-group-address; 727 } 728 description 729 "This type represents a version-neutral IP multicast group 730 address. The format of the textual representation implies 731 the IP version."; 732 } 734 typedef ipv4-multicast-source-address { 735 type union { 736 type enumeration { 737 enum "*" { 738 description 739 "Any source address."; 740 } 741 } 742 type inet:ipv4-address; 743 } 744 description 745 "Multicast source IPv4 address type."; 746 } 748 typedef ipv6-multicast-source-address { 749 type union { 750 type enumeration { 751 enum "*" { 752 description 753 "Any source address."; 754 } 755 } 756 type inet:ipv6-address; 757 } 758 description 759 "Multicast source IPv6 address type."; 760 } 762 /*** Collection of types common to protocols ***/ 764 typedef bandwidth-ieee-float32 { 765 type string { 766 pattern 767 '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' 768 + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' 769 + '1[01][0-9]|0?[0-9]?[0-9])?)'; 770 } 771 description 772 "Bandwidth in IEEE 754 floating point 32-bit binary format: 773 (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), 774 where Exponent uses 8 bits, and Fraction uses 23 bits. 775 The units are octets per second. 776 The encoding format is the external hexadecimal-significant 777 character sequences specified in IEEE 754 and C99. The 778 format is restricted to be normalized, non-negative, and 779 non-fraction: 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D 780 where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are 781 integers in the range of [0..127]. 782 When six hexadecimal digits are used for 'hhhhhh' or 783 'HHHHHH', the least significant digit must be an even 784 number. 'x' and 'X' indicate hexadecimal; 'p' and 'P' 785 indicate power of two. Some examples are: 0x0p0, 0x1p10, and 786 0x1.abcde2p+20"; 787 reference 788 "IEEE Std 754-2008: IEEE Standard for Floating-Point 789 Arithmetic."; 790 } 792 typedef link-access-type { 793 type enumeration { 794 enum "broadcast" { 795 description 796 "Specify broadcast multi-access network."; 797 } 798 enum "non-broadcast-multiaccess" { 799 description 800 "Specify Non-Broadcast Multi-Access (NBMA) network."; 801 } 802 enum "point-to-multipoint" { 803 description 804 "Specify point-to-multipoint network."; 805 } 806 enum "point-to-point" { 807 description 808 "Specify point-to-point network."; 809 } 810 } 811 description 812 "Link access type."; 813 } 814 typedef timer-multiplier { 815 type uint8; 816 description 817 "The number of timer value intervals that should be 818 interpreted as a failure."; 819 } 821 typedef timer-value-seconds16 { 822 type union { 823 type uint16 { 824 range "1..65535"; 825 } 826 type enumeration { 827 enum "infinity" { 828 description 829 "The timer is set to infinity."; 830 } 831 enum "not-set" { 832 description 833 "The timer is not set."; 834 } 835 } 836 } 837 units "seconds"; 838 description 839 "Timer value type, in seconds (16-bit range)."; 840 } 842 typedef timer-value-seconds32 { 843 type union { 844 type uint32 { 845 range "1..4294967295"; 846 } 847 type enumeration { 848 enum "infinity" { 849 description 850 "The timer is set to infinity."; 851 } 852 enum "not-set" { 853 description 854 "The timer is not set."; 855 } 856 } 857 } 858 units "seconds"; 859 description 860 "Timer value type, in seconds (32-bit range)."; 861 } 862 typedef timer-value-milliseconds { 863 type union { 864 type uint32 { 865 range "1..4294967295"; 866 } 867 type enumeration { 868 enum "infinity" { 869 description 870 "The timer is set to infinity."; 871 } 872 enum "not-set" { 873 description 874 "The timer is not set."; 875 } 876 } 877 } 878 units "milliseconds"; 879 description 880 "Timer value type, in milliseconds."; 881 } 883 typedef percentage { 884 type uint8 { 885 range "0..100"; 886 } 887 description 888 "Integer indicating a percentage value"; 889 } 891 typedef timeticks64 { 892 type uint64; 893 description 894 "This type is based on the timeticks type defined in 895 RFC 6991, but with 64-bit width. It represents the time, 896 modulo 2^64, in hundredths of a second between two epochs."; 897 reference "RFC 6991 - Common YANG Data Types"; 898 } 900 typedef uint24 { 901 type uint32 { 902 range "0 .. 16777215"; 903 } 904 description 905 "24-bit unsigned integer"; 906 } 908 /*** Collection of types related to MPLS/GMPLS ***/ 909 typedef generalized-label { 910 type binary; 911 description 912 "Generalized label. Nodes sending and receiving the 913 Generalized Label are aware of the link-specific 914 label context and type."; 915 reference "RFC3471: Section 3.2"; 916 } 918 typedef mpls-label-special-purpose { 919 type identityref { 920 base mpls-label-special-purpose-value; 921 } 922 description 923 "This type represents the special-purpose Multiprotocol Label 924 Switching (MPLS) label values."; 925 reference 926 "RFC3032: MPLS Label Stack Encoding. 927 RFC7274: Allocating and Retiring Special-Purpose MPLS 928 Labels."; 929 } 931 typedef mpls-label-general-use { 932 type uint32 { 933 range "16..1048575"; 934 } 935 description 936 "The 20-bit label values in an MPLS label stack entry, 937 specified in RFC3032. This label value does not include 938 the encodings of Traffic Class and TTL (time to live). 939 The label range specified by this type is for general use, 940 with special-purpose MPLS label values excluded."; 941 reference "RFC3032: MPLS Label Stack Encoding."; 942 } 944 typedef mpls-label { 945 type union { 946 type mpls-label-special-purpose; 947 type mpls-label-general-use; 948 } 949 description 950 "The 20-bit label values in an MPLS label stack entry, 951 specified in RFC3032. This label value does not include 952 the encodings of Traffic Class and TTL (time to live)."; 953 reference "RFC3032: MPLS Label Stack Encoding."; 954 } 956 /*** Groupings **/ 957 grouping mpls-label-stack { 958 description 959 "This grouping specifies an MPLS label stack. List 960 entries are in ascending order of ID with the first entry 961 being the leftmost label in the Network-Byte-Order (NBO) 962 MPLS header, i.e., the top of the label stack. The next 963 entry is the next label in MPLS header label stack, and 964 so on."; 965 container mpls-label-stack { 966 description 967 "Container for a list of MPLS label stack entries."; 968 list entry { 969 key "id"; 970 description 971 "List of MPLS label stack entries."; 972 leaf id { 973 type uint8; 974 description 975 "Identifies the entry in a sequence of an MPLS label 976 stack entries. An entry with smaller ID value 977 precedes an entry with a larger value in the 978 Network-Byte-Order (NBO) MPLS header. The value of 979 this ID has no semantic meaning other than ordering 980 and referencing the entry."; 981 } 982 leaf label { 983 type rt-types:mpls-label; 984 description 985 "Label value."; 986 } 987 leaf ttl { 988 type uint8; 989 description 990 "Time to Live (TTL)."; 991 reference "RFC3032: MPLS Label Stack Encoding."; 992 } 993 leaf traffic-class { 994 type uint8 { 995 range "0..7"; 996 } 997 description 998 "Traffic Class (TC)."; 999 reference 1000 "RFC5462: Multiprotocol Label Switching (MPLS) Label 1001 Stack Entry: 'EXP' Field Renamed to 'Traffic Class' 1002 Field."; 1003 } 1004 } 1006 } 1007 } 1009 grouping vpn-route-targets { 1010 description 1011 "A grouping that specifies Route Target import-export rules 1012 used in the BGP enabled Virtual Private Networks (VPNs)."; 1013 reference 1014 "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs). 1015 RFC4664: Framework for Layer 2 Virtual Private Networks 1016 (L2VPNs)"; 1017 list vpn-target { 1018 key "route-target"; 1019 description 1020 "List of Route Targets."; 1021 leaf route-target { 1022 type rt-types:route-target; 1023 description 1024 "Route Target value"; 1025 } 1026 leaf route-target-type { 1027 type rt-types:route-target-type; 1028 mandatory true; 1029 description 1030 "Import/export type of the Route Target."; 1031 } 1032 } 1033 } 1034 } 1036 1038 4. IANA Routing Types YANG Module 1040 file "iana-routing-types@2017-09-02.yang" 1041 module iana-routing-types { 1042 namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; 1043 prefix iana-rt-types; 1045 organization 1046 "IANA"; 1047 contact 1048 " Internet Assigned Numbers Authority 1050 Postal: ICANN 1051 4676 Admiralty Way, Suite 330 1052 Marina del Rey, CA 90292 1054 Tel: +1 310 823 9358 1055 "; 1056 description 1057 "This module contains a collection of YANG data types 1058 considered defined by IANA and used for routing 1059 protocols. 1061 Copyright (c) 2017 IETF Trust and the persons 1062 identified as authors of the code. All rights reserved. 1064 Redistribution and use in source and binary forms, with or 1065 without modification, is permitted pursuant to, and subject 1066 to the license terms contained in, the Simplified BSD License 1067 set forth in Section 4.c of the IETF Trust's Legal Provisions 1068 Relating to IETF Documents 1069 (http://trustee.ietf.org/license-info). 1071 This version of this YANG module is part of RFC XXXX; see 1072 the RFC itself for full legal notices."; 1073 reference "RFC XXXX"; 1075 revision 2017-09-02 { 1076 description "Initial revision."; 1077 reference "RFC TBD: IANA Routing YANG Data Types"; 1078 } 1080 /*** Collection of IANA types related to routing ***/ 1081 /*** IANA address family enumeration ***/ 1083 typedef address-family { 1084 type enumeration { 1085 enum ipv4 { 1086 value 1; 1087 description "IPv4 Address Family"; 1088 } 1090 enum ipv6 { 1091 value 2; 1092 description "IPv6 Address Family"; 1093 } 1095 enum nsap { 1096 value 3; 1097 description "OSI Network Service Access Point (NSAP) 1098 Address Family"; 1099 } 1101 enum hdlc { 1102 value 4; 1103 description "High-Level Data Link Control (HDLC) 1104 Address Family"; 1106 } 1108 enum bbn1822 { 1109 value 5; 1110 description "Bolt, Beranek, and Newman Report 1111 1822 (BBN 1822) Address Family"; 1112 } 1114 enum ieee802 { 1115 value 6; 1116 description "IEEE 802 Committee Address Family (aka, 1117 MAC address)"; 1118 } 1120 enum e163 { 1121 value 7; 1122 description "ITU-T E.163 Address Family"; 1123 } 1125 enum e164 { 1126 value 8; 1127 description "ITU-T E.164 (SMDS, Frame Relay, ATM) 1128 Address Family"; 1129 } 1131 enum f69 { 1132 value 9; 1133 description "ITU-T F.69 (Telex) Address Family"; 1134 } 1136 enum x121 { 1137 value 10; 1138 description "ITU-T X.121 (X.25, Frame Relay) 1139 Address Family"; 1140 } 1142 enum ipx { 1143 value 11; 1144 description "Novell Internetwork Packet Exchange (IPX) 1145 Address Family"; 1146 } 1148 enum appletalk { 1149 value 12; 1150 description "Apple AppleTalk Address Family"; 1151 } 1153 enum decnet-iv { 1154 value 13; 1155 description "Digital Equipment DECnet Phase IV 1156 Address Family"; 1157 } 1159 enum vines { 1160 value 14; 1161 description "Banyan Vines Address Family"; 1162 } 1164 enum e164-nsap { 1165 value 15; 1166 description "ITU-T E.164 with NSAP sub-address 1167 Address Family"; 1168 } 1170 enum dns { 1171 value 16; 1172 description "Domain Name System (DNS) Address 1173 Family"; 1174 } 1176 enum distinguished-name { 1177 value 17; 1178 description "Distinguished Name Address Family"; 1179 } 1181 enum as-num { 1182 value 18; 1183 description "AS Number Address Family"; 1184 } 1186 enum xtp-v4 { 1187 value 19; 1188 description "Xpress Transport Protocol (XTP) over IPv4 1189 Address Family"; 1190 } 1192 enum xtp-v6 { 1193 value 20; 1194 description "Xpress Transport Protocol (XTP) over IPv6 1195 Address Family"; 1196 } 1197 enum xtp-native { 1198 value 21; 1199 description "Xpress Transport Protocol (XTP) native mode 1200 Address Family"; 1201 } 1203 enum fc-port { 1204 value 22; 1205 description "Fibre Channel (FC) World-Wide Port Name 1206 Address Family"; 1207 } 1209 enum fc-node { 1210 value 23; 1211 description "Fibre Channel (FC) World-Wide Node Name 1212 Address Family"; 1213 } 1215 enum gwid { 1216 value 24; 1217 description 1218 "ATM Gateway Identifier (GWID) Number Address Family"; 1219 } 1221 enum l2vpn { 1222 value 25; 1223 description "Layer-2 VPN (L2VPN) Address Family"; 1224 } 1226 enum mpls-tp-section-eid { 1227 value 26; 1228 description "MPLS-TP Section Endpoint Identifier 1229 Address Family"; 1230 } 1232 enum mpls-tp-lsp-eid { 1233 value 27; 1234 description "MPLS-TP LSP Endpoint Identifier 1235 Address Family"; 1236 } 1238 enum mpls-tp-pwe-eid { 1239 value 28; 1240 description "MPLS-TP Pseudowire Endpoint Identifier 1241 Address Family"; 1242 } 1244 enum mt-v4 { 1245 value 29; 1246 description "Multi-Topology IPv4 Address Family"; 1247 } 1249 enum mt-v6 { 1250 value 30; 1251 description "Multi-Topology IPv6 Address Family"; 1252 } 1254 enum eigrp-common-sf { 1255 value 16384; 1256 description "Enhanced Interior Gateway Routing Protocol 1257 (EIGRP) Common Service Family Address 1258 Family"; 1259 } 1261 enum eigrp-v4-sf { 1262 value 16385; 1263 description "Enhanced Interior Gateway Routing Protocol 1264 (EIGRP) IPv4 Service Family Address Family"; 1265 } 1267 enum eigrp-v6-sf { 1268 value 16386; 1269 description "Enhanced Interior Gateway Routing Protocol 1270 (EIGRP) IPv6 Service Family Address Family"; 1271 } 1273 enum lcaf { 1274 value 16387; 1275 description "LISP Canonical Address Format (LCAF) 1276 Address Family"; 1277 } 1279 enum bgp-ls { 1280 value 16388; 1281 description "Border Gatway Protocol - Link State (BGP-LS) 1282 Address Family"; 1283 } 1285 enum mac-48 { 1286 value 16389; 1287 description "IEEE 48-bit Media Access Control (MAC) 1288 Address Family"; 1289 } 1291 enum mac-64 { 1292 value 16390; 1293 description "IEEE 64-bit Media Access Control (MAC) 1294 Address Family"; 1295 } 1297 enum trill-oui { 1298 value 16391; 1299 description "TRILL IEEE Organizationally Unique 1300 Identifier (OUI) Address Family"; 1301 } 1303 enum trill-mac-24 { 1304 value 16392; 1305 description "TRILL Final 3 octets of 48-bit MAC 1306 address Address Family"; 1307 } 1309 enum trill-mac-40 { 1310 value 16393; 1311 description "TRILL Final 5 octets of 64-bit MAC 1312 address Address Family"; 1313 } 1315 enum ipv6-64 { 1316 value 16394; 1317 description "First 8 octects (64-bits) of an IPv6 1318 address Address Family"; 1319 } 1321 enum trill-rbridge-port-id { 1322 value 16395; 1323 description "TRILL Remote Bridge (RBridge) Port ID 1324 Address Family"; 1325 } 1327 enum trill-nickname { 1328 value 16396; 1329 description "TRILL Nickname Address Family"; 1330 } 1331 } 1332 description "Enumeration containing all the IANA 1333 defined address families."; 1335 } 1337 /*** SAFIs for Multi-Protocol BGP enumeration ***/ 1339 typedef bgp-safi { 1340 type enumeration { 1341 enum unicast-safi { 1342 value 1; 1343 description "Unicast SAFI"; 1344 } 1346 enum multicast-safi { 1347 value 2; 1348 description "Multicast SAFI"; 1349 } 1351 enum labeled-unicast-safi { 1352 value 4; 1353 description "Labeled Unicast SAFI"; 1354 } 1356 enum multicast-vpn-safi { 1357 value 5; 1358 description "Multicast VPN SAFI"; 1359 } 1361 enum pseudowire-safi { 1362 value 6; 1363 description "Multi-segment Pseudowire VPN SAFI"; 1364 } 1366 enum tunnel-enap-safi { 1367 value 7; 1368 description "Tunnel Encap SAFI"; 1369 } 1371 enum mcast-vpls-safi { 1372 value 8; 1373 description "Multicast Virtual Private LAN Service 1374 (VPLS) SAFI"; 1375 } 1377 enum tunnel-safi { 1378 value 64; 1379 description "Tunnel SAFI"; 1380 } 1382 enum vpls-safi { 1383 value 65; 1384 description "Virtual Private LAN Service (VPLS) SAFI"; 1385 } 1387 enum mdt-safi { 1388 value 66; 1389 description "Multicast Distribution Tree (MDT) SAFI"; 1390 } 1392 enum v4-over-v6-safi { 1393 value 67; 1394 description "IPv4 over IPv6 SAFI"; 1395 } 1397 enum v6-over-v4-safi { 1398 value 68; 1399 description "IPv6 over IPv4 SAFI"; 1400 } 1402 enum l1-vpn-auto-discovery-safi { 1403 value 69; 1404 description "Layer-1 VPN Auto Discovery SAFI"; 1405 } 1407 enum evpn-safi { 1408 value 70; 1409 description "Ethernet VPN (EVPN) SAFI"; 1410 } 1412 enum bgp-ls-safi { 1413 value 71; 1414 description "BGP Link-State (BGP-LS) SAFI"; 1415 } 1417 enum bgp-ls-vpn-safi { 1418 value 72; 1419 description "BGP Link-State (BGP-LS) VPN SAFI"; 1420 } 1422 enum sr-te-safi { 1423 value 73; 1424 description "Segment Routing - Traffic Engineering 1425 (SR-TE) SAFI"; 1426 } 1428 enum labeled-vpn-safi { 1429 value 128; 1430 description "MPLS Labeled VPN SAFI"; 1431 } 1433 enum multicast-mpls-vpn-safi { 1434 value 129; 1435 description "Multicast for BGP/MPLS IP VPN SAFI"; 1436 } 1437 enum route-target-safi { 1438 value 132; 1439 description "Route Target SAFI"; 1440 } 1442 enum ipv4-flow-spec-safi { 1443 value 133; 1444 description "IPv4 Flow Specification SAFI"; 1445 } 1447 enum vpnv4-flow-spec-safi { 1448 value 134; 1449 description "IPv4 VPN Flow Specification SAFI"; 1450 } 1452 enum vpn-auto-discovery-safi { 1453 value 140; 1454 description "VPN Auto-Discovery SAFI"; 1455 } 1456 } 1457 description "Enumeration for BGP Subsequent Address 1458 Family Identifier (SAFI) - RFC 4760."; 1459 } 1460 } 1462 1464 5. IANA Considerations 1466 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1467 actual RFC number (and remove this note). 1469 This document registers the following namespace URIs in the IETF XML 1470 registry [RFC3688]: 1472 -------------------------------------------------------------------- 1473 URI: urn:ietf:params:xml:ns:yang:ietf-routing-types 1474 Registrant Contact: The IESG. 1475 XML: N/A, the requested URI is an XML namespace. 1476 -------------------------------------------------------------------- 1478 -------------------------------------------------------------------- 1479 URI: urn:ietf:params:xml:ns:yang:iana-routing-types 1480 Registrant Contact: IANA 1481 XML: N/A, the requested URI is an XML namespace. 1482 -------------------------------------------------------------------- 1483 This document registers the following YANG modules in the YANG Module 1484 Names registry [RFC6020]: 1486 -------------------------------------------------------------------- 1487 name: ietf-routing-types 1488 namespace: urn:ietf:params:xml:ns:yang:ietf-routing-types 1489 prefix: rt-types 1490 reference: RFC XXXX 1491 -------------------------------------------------------------------- 1493 -------------------------------------------------------------------- 1494 name: iana-routing-types 1495 namespace: urn:ietf:params:xml:ns:yang:iana-routing-types 1496 prefix: iana-rt-types 1497 reference: RFC XXXX 1498 -------------------------------------------------------------------- 1500 5.1. IANA-Maintained iana-routing-types Module 1502 This document defines the initial version of the IANA-maintained 1503 iana-routing-types YANG module. 1505 The iana-routing-types YANG module is intended to reflect the 1506 "Address Family Numbers" registry [IANA-ADDRESS-FAMILY-REGISTRY] and 1507 "Subsequent Address Family Identifiers (SAFI) Parameters" registry 1508 [IANA-SAFI-REGISTRY]. 1510 IANA has added this notes to the "iana-routing-types YANG Module" 1511 registry: 1513 Address Families and Subsequent Address Families must not be 1514 directly added to the iana-routing-types YANG module. They must 1515 instead be respectively added to the "Address Family Numbers" 1516 and "Subsequent Address Family Identifiers (SAFI) Parameters" 1517 registries. 1519 When an Address Family or Subsequent Address Family is respectively 1520 added to the "Address Family Numbers" registry or the "Subsequent 1521 Address Family Identifiers (SAFI) Parameters" registry, a new 1522 "identity" statement must be added to the iana-routing-types YANG 1523 module. The name of the "identity" is the same as the corresponding 1524 address family or SAFI only it willl be a valid YANG identifier in 1525 all lowercase and with hyphens separating individual words in 1526 compound identifiers. The following substatements to the "identity" 1527 statement should be defined: 1529 "base": Contains the value "address-family" for address families 1530 or "bgp-safi" for subsequent address families. 1532 "status": Include only if a registration has been deprecated (use 1533 the value "deprecated") or obsoleted (use the value 1534 "obsolete"). 1536 "description": Replicate the description from the registry, 1537 if any. Insert line breaks as needed so that the 1538 line does not exceed 72 characters. 1540 "reference": Replicate the reference from the registry, if any, 1541 and add the title of the document. 1543 Unassigned or reserved values are not present in these modules. 1545 When the iana-routing-types YANG module is updated, a new "revision" 1546 statement must be added in front of the existing revision statements. 1548 IANA has added this new note to the the "Address Family Numbers" and 1549 "Subsequent Address Family Identifiers (SAFI) Parameters" registries: 1551 When this registry is modified, the YANG module 1552 iana-routing-types must be updated as defined in RFC XXXX. 1554 6. Security Considerations 1556 This document defines common data types using the YANG data modeling 1557 language. The definitions themselves have no security impact on the 1558 Internet, but the usage of these definitions in concrete YANG modules 1559 might have. The security considerations spelled out in the YANG 1560 specification [RFC7950] apply for this document as well. 1562 7. Acknowledgements 1564 The Routing Area Yang Architecture design team members included Acee 1565 Lindem, Anees Shaikh, Christian Hopps, Dean Bogdanovic, Ebben Aries, 1566 Lou Berger, Qin Wu, Rob Shakir, Xufeng Liu, and Yingzhen Qu. 1568 Thanks to Martin Bjorkland, Tom Petch, Stewart Bryant, and Radek 1569 Krejci for comments on the model and document text. Thanks to Jeff 1570 Haas and Robert Raszuk for suggestions for additional common routing 1571 types. 1573 8. References 1575 8.1. Normative References 1577 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1578 DOI 10.17487/RFC3688, January 2004, . 1581 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1582 the Network Configuration Protocol (NETCONF)", RFC 6020, 1583 DOI 10.17487/RFC6020, October 2010, . 1586 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1587 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1588 . 1590 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1591 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1592 . 1594 [IANA-ADDRESS-FAMILY-REGISTRY] 1595 "IANA Address Family Registry", 1596 . 1599 [IANA-SAFI-REGISTRY] 1600 "IANA Subsequent Address Family Identities (SAFI) 1601 Parameters Registry", . 1604 8.2. Informative References 1606 [IEEE754] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE 1607 Std 754-2008, August 2008. 1609 [I-D.ietf-bfd-yang] 1610 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 1611 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 1612 Detection (BFD)", draft-ietf-bfd-yang-06 (work in 1613 progress), June 2017. 1615 [I-D.ietf-idr-bgp-model] 1616 Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K., 1617 Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and 1618 X. Liu, "BGP Model for Service Provider Networks", draft- 1619 ietf-idr-bgp-model-02 (work in progress), July 2016. 1621 [I-D.ietf-ospf-yang] 1622 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1623 "Yang Data Model for OSPF Protocol", draft-ietf-ospf- 1624 yang-08 (work in progress), July 2017. 1626 [I-D.ietf-pim-yang] 1627 Liu, X., McAllister, P., Peter, A., Sivakumar, M., Liu, 1628 Y., and f. hu, "A YANG data model for Protocol-Independent 1629 Multicast (PIM)", draft-ietf-pim-yang-08 (work in 1630 progress), April 2017. 1632 [I-D.ietf-teas-yang-rsvp] 1633 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 1634 and H. Shah, "A YANG Data Model for Resource Reservation 1635 Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in 1636 progress), March 2017. 1638 [I-D.ietf-teas-yang-te] 1639 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 1640 I. Bryskin, "A YANG Data Model for Traffic Engineering 1641 Tunnels and Interfaces", draft-ietf-teas-yang-te-08 (work 1642 in progress), July 2017. 1644 [I-D.ietf-bess-l2vpn-yang] 1645 Shah, H., Brissette, P., Chen, I., Hussain, I., Wen, B., 1646 and K. Tiruveedhula, "YANG Data Model for MPLS-based 1647 L2VPN", draft-ietf-bess-l2vpn-yang-06 (work in progress), 1648 June 2017. 1650 [I-D.ietf-bess-l3vpn-yang] 1651 Jain, D., Patel, K., Brissette, P., Li, Z., Zhuang, S., 1652 Liu, X., Haas, J., Esale, S., and B. Wen, "Yang Data Model 1653 for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang-01 (work 1654 in progress), April 2017. 1656 [I-D.ietf-mpls-base-yang] 1657 Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., 1658 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 1659 Model for MPLS Base", draft-ietf-mpls-base-yang-05 (work 1660 in progress), July 2017. 1662 [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., 1663 Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack 1664 Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, 1665 . 1667 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1668 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1669 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1670 . 1672 [RFC3471] Berger, L., Ed., "Generalized Multi-Protocol Label 1673 Switching (GMPLS) Signaling Functional Description", 1674 RFC 3471, DOI 10.17487/RFC3471, January 2003, 1675 . 1677 [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private 1678 Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February 1679 2006, . 1681 [RFC4664] Andersson, L., Ed. and E. Rosen, Ed., "Framework for Layer 1682 2 Virtual Private Networks (L2VPNs)", RFC 4664, 1683 DOI 10.17487/RFC4664, September 2006, . 1686 [RFC5701] Rekhter, Y., "IPv6 Address Specific BGP Extended Community 1687 Attribute", RFC 5701, DOI 10.17487/RFC5701, November 2009, 1688 . 1690 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1691 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 1692 . 1694 [RFC7274] Kompella, K., Andersson, L., and A. Farrel, "Allocating 1695 and Retiring Special-Purpose MPLS Labels", RFC 7274, 1696 DOI 10.17487/RFC7274, June 2014, . 1699 [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., 1700 Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based 1701 Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February 1702 2015, . 1704 Authors' Addresses 1706 Xufeng Liu 1707 Jabil 1708 8281 Greensboro Drive, Suite 200 1709 McLean VA 22102 1710 USA 1712 EMail: Xufeng_Liu@jabil.com 1713 Yingzhen Qu 1714 Futurewei Technologies, Inc. 1715 2330 Central Expressway 1716 Santa Clara CA 95050 1717 USA 1719 EMail: yingzhen.qu@huawei.com 1721 Acee Lindem 1722 Cisco Systems 1723 301 Midenhall Way 1724 Cary, NC 27513 1725 USA 1727 EMail: acee@cisco.com 1729 Christian Hopps 1730 Deutsche Telekom 1732 EMail: chopps@chopps.org 1734 Lou Berger 1735 LabN Consulting, L.L.C. 1737 EMail: lberger@labn.net