idnits 2.17.1 draft-ietf-rtgwg-routing-types-12.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 18, 2017) is 2383 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' -- No information found for draft-ietf-bfd-yang - is the name correct? == Outdated reference: A later version (-17) exists of draft-ietf-idr-bgp-model-02 == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-08 -- No information found for draft-ietf-pim-yang - is the name correct? == Outdated reference: A later version (-19) exists of draft-ietf-teas-yang-rsvp-07 == Outdated reference: A later version (-36) 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: A later version (-17) exists of draft-ietf-mpls-base-yang-05 Summary: 0 errors (**), 0 flaws (~~), 10 warnings (==), 5 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 22, 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 18, 2017 14 Routing Area Common YANG Data Types 15 draft-ietf-rtgwg-routing-types-12 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 22, 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-18.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-11 { 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. The label 960 stack is encoded as a list of label stack entries. The 961 list key is an identifier which indicates relative 962 ordering of each entry, with the lowest value identifier 963 corresponding to the top of the label stack."; 964 container mpls-label-stack { 965 description 966 "Container for a list of MPLS label stack entries."; 967 list entry { 968 key "id"; 969 description 970 "List of MPLS label stack entries."; 971 leaf id { 972 type uint8; 973 description 974 "Identifies the entry in a sequence of MPLS label 975 stack entries. An entry with a smaller identifier 976 value precedes an entry with a larger identifier 977 value in the label stack. The value of this ID has 978 no semantic meaning other than relative ordering 979 and referencing the entry."; 980 } 981 leaf label { 982 type rt-types:mpls-label; 983 description 984 "Label value."; 985 } 986 leaf ttl { 987 type uint8; 988 description 989 "Time to Live (TTL)."; 990 reference "RFC3032: MPLS Label Stack Encoding."; 991 } 992 leaf traffic-class { 993 type uint8 { 994 range "0..7"; 995 } 996 description 997 "Traffic Class (TC)."; 998 reference 999 "RFC5462: Multiprotocol Label Switching (MPLS) Label 1000 Stack Entry: 'EXP' Field Renamed to 'Traffic Class' 1001 Field."; 1002 } 1003 } 1004 } 1006 } 1008 grouping vpn-route-targets { 1009 description 1010 "A grouping that specifies Route Target import-export rules 1011 used in the BGP enabled Virtual Private Networks (VPNs)."; 1012 reference 1013 "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs). 1014 RFC4664: Framework for Layer 2 Virtual Private Networks 1015 (L2VPNs)"; 1016 list vpn-target { 1017 key "route-target"; 1018 description 1019 "List of Route Targets."; 1020 leaf route-target { 1021 type rt-types:route-target; 1022 description 1023 "Route Target value"; 1024 } 1025 leaf route-target-type { 1026 type rt-types:route-target-type; 1027 mandatory true; 1028 description 1029 "Import/export type of the Route Target."; 1030 } 1031 } 1032 } 1033 } 1035 1037 4. IANA Routing Types YANG Module 1039 file "iana-routing-types@2017-09-18.yang" 1040 module iana-routing-types { 1041 namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; 1042 prefix iana-rt-types; 1044 organization 1045 "IANA"; 1046 contact 1047 " Internet Assigned Numbers Authority 1049 Postal: ICANN 1050 4676 Admiralty Way, Suite 330 1051 Marina del Rey, CA 90292 1053 Tel: +1 310 823 9358 1054 "; 1055 description 1056 "This module contains a collection of YANG data types 1057 considered defined by IANA and used for routing 1058 protocols. 1060 Copyright (c) 2017 IETF Trust and the persons 1061 identified as authors of the code. All rights reserved. 1063 Redistribution and use in source and binary forms, with or 1064 without modification, is permitted pursuant to, and subject 1065 to the license terms contained in, the Simplified BSD License 1066 set forth in Section 4.c of the IETF Trust's Legal Provisions 1067 Relating to IETF Documents 1068 (http://trustee.ietf.org/license-info). 1070 This version of this YANG module is part of RFC XXXX; see 1071 the RFC itself for full legal notices."; 1072 reference "RFC XXXX"; 1074 revision 2017-09-18 { 1075 description "Initial revision."; 1076 reference "RFC TBD: IANA Routing YANG Data Types"; 1077 } 1079 /*** Collection of IANA types related to routing ***/ 1080 /*** IANA address family enumeration ***/ 1082 typedef address-family { 1083 type enumeration { 1084 enum ipv4 { 1085 value 1; 1086 description "IPv4 Address Family"; 1087 } 1089 enum ipv6 { 1090 value 2; 1091 description "IPv6 Address Family"; 1092 } 1094 enum nsap { 1095 value 3; 1096 description "OSI Network Service Access Point (NSAP) 1097 Address Family"; 1098 } 1100 enum hdlc { 1101 value 4; 1102 description "High-Level Data Link Control (HDLC) 1103 Address Family"; 1105 } 1107 enum bbn1822 { 1108 value 5; 1109 description "Bolt, Beranek, and Newman Report 1110 1822 (BBN 1822) Address Family"; 1111 } 1113 enum ieee802 { 1114 value 6; 1115 description "IEEE 802 Committee Address Family (aka, 1116 MAC address)"; 1117 } 1119 enum e163 { 1120 value 7; 1121 description "ITU-T E.163 Address Family"; 1122 } 1124 enum e164 { 1125 value 8; 1126 description "ITU-T E.164 (SMDS, Frame Relay, ATM) 1127 Address Family"; 1128 } 1130 enum f69 { 1131 value 9; 1132 description "ITU-T F.69 (Telex) Address Family"; 1133 } 1135 enum x121 { 1136 value 10; 1137 description "ITU-T X.121 (X.25, Frame Relay) 1138 Address Family"; 1139 } 1141 enum ipx { 1142 value 11; 1143 description "Novell Internetwork Packet Exchange (IPX) 1144 Address Family"; 1145 } 1147 enum appletalk { 1148 value 12; 1149 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 } 1198 enum xtp-native { 1199 value 21; 1200 description "Xpress Transport Protocol (XTP) native mode 1201 Address Family"; 1202 } 1204 enum fc-port { 1205 value 22; 1206 description "Fibre Channel (FC) World-Wide Port Name 1207 Address Family"; 1208 } 1210 enum fc-node { 1211 value 23; 1212 description "Fibre Channel (FC) World-Wide Node Name 1213 Address Family"; 1214 } 1216 enum gwid { 1217 value 24; 1218 description 1219 "ATM Gateway Identifier (GWID) Number Address Family"; 1220 } 1222 enum l2vpn { 1223 value 25; 1224 description "Layer-2 VPN (L2VPN) Address Family"; 1225 } 1227 enum mpls-tp-section-eid { 1228 value 26; 1229 description "MPLS-TP Section Endpoint Identifier 1230 Address Family"; 1231 } 1233 enum mpls-tp-lsp-eid { 1234 value 27; 1235 description "MPLS-TP LSP Endpoint Identifier 1236 Address Family"; 1237 } 1239 enum mpls-tp-pwe-eid { 1240 value 28; 1241 description "MPLS-TP Pseudowire Endpoint Identifier 1242 Address Family"; 1243 } 1245 enum mt-v4 { 1246 value 29; 1247 description "Multi-Topology IPv4 Address Family"; 1248 } 1250 enum mt-v6 { 1251 value 30; 1252 description "Multi-Topology IPv6 Address Family"; 1253 } 1255 enum eigrp-common-sf { 1256 value 16384; 1257 description "Enhanced Interior Gateway Routing Protocol 1258 (EIGRP) Common Service Family Address 1259 Family"; 1260 } 1262 enum eigrp-v4-sf { 1263 value 16385; 1264 description "Enhanced Interior Gateway Routing Protocol 1265 (EIGRP) IPv4 Service Family Address Family"; 1266 } 1268 enum eigrp-v6-sf { 1269 value 16386; 1270 description "Enhanced Interior Gateway Routing Protocol 1271 (EIGRP) IPv6 Service Family Address Family"; 1272 } 1274 enum lcaf { 1275 value 16387; 1276 description "LISP Canonical Address Format (LCAF) 1277 Address Family"; 1278 } 1280 enum bgp-ls { 1281 value 16388; 1282 description "Border Gatway Protocol - Link State (BGP-LS) 1283 Address Family"; 1284 } 1286 enum mac-48 { 1287 value 16389; 1288 description "IEEE 48-bit Media Access Control (MAC) 1289 Address Family"; 1290 } 1292 enum mac-64 { 1293 value 16390; 1294 description "IEEE 64-bit Media Access Control (MAC) 1295 Address Family"; 1296 } 1298 enum trill-oui { 1299 value 16391; 1300 description "TRILL IEEE Organizationally Unique 1301 Identifier (OUI) Address Family"; 1302 } 1304 enum trill-mac-24 { 1305 value 16392; 1306 description "TRILL Final 3 octets of 48-bit MAC 1307 address Address Family"; 1308 } 1310 enum trill-mac-40 { 1311 value 16393; 1312 description "TRILL Final 5 octets of 64-bit MAC 1313 address Address Family"; 1314 } 1316 enum ipv6-64 { 1317 value 16394; 1318 description "First 8 octects (64-bits) of an IPv6 1319 address Address Family"; 1320 } 1322 enum trill-rbridge-port-id { 1323 value 16395; 1324 description "TRILL Remote Bridge (RBridge) Port ID 1325 Address Family"; 1326 } 1328 enum trill-nickname { 1329 value 16396; 1330 description "TRILL Nickname Address Family"; 1331 } 1332 } 1333 description "Enumeration containing all the IANA 1334 defined address families."; 1336 } 1338 /*** SAFIs for Multi-Protocol BGP enumeration ***/ 1340 typedef bgp-safi { 1341 type enumeration { 1342 enum unicast-safi { 1343 value 1; 1344 description "Unicast SAFI"; 1345 } 1347 enum multicast-safi { 1348 value 2; 1349 description "Multicast SAFI"; 1350 } 1352 enum labeled-unicast-safi { 1353 value 4; 1354 description "Labeled Unicast SAFI"; 1355 } 1357 enum multicast-vpn-safi { 1358 value 5; 1359 description "Multicast VPN SAFI"; 1360 } 1362 enum pseudowire-safi { 1363 value 6; 1364 description "Multi-segment Pseudowire VPN SAFI"; 1365 } 1367 enum tunnel-enap-safi { 1368 value 7; 1369 description "Tunnel Encap SAFI"; 1370 } 1372 enum mcast-vpls-safi { 1373 value 8; 1374 description "Multicast Virtual Private LAN Service 1375 (VPLS) SAFI"; 1376 } 1378 enum tunnel-safi { 1379 value 64; 1380 description "Tunnel SAFI"; 1381 } 1383 enum vpls-safi { 1384 value 65; 1385 description "Virtual Private LAN Service (VPLS) SAFI"; 1386 } 1388 enum mdt-safi { 1389 value 66; 1390 description "Multicast Distribution Tree (MDT) SAFI"; 1392 } 1394 enum v4-over-v6-safi { 1395 value 67; 1396 description "IPv4 over IPv6 SAFI"; 1397 } 1399 enum v6-over-v4-safi { 1400 value 68; 1401 description "IPv6 over IPv4 SAFI"; 1402 } 1404 enum l1-vpn-auto-discovery-safi { 1405 value 69; 1406 description "Layer-1 VPN Auto Discovery SAFI"; 1407 } 1409 enum evpn-safi { 1410 value 70; 1411 description "Ethernet VPN (EVPN) SAFI"; 1412 } 1414 enum bgp-ls-safi { 1415 value 71; 1416 description "BGP Link-State (BGP-LS) SAFI"; 1417 } 1419 enum bgp-ls-vpn-safi { 1420 value 72; 1421 description "BGP Link-State (BGP-LS) VPN SAFI"; 1422 } 1424 enum sr-te-safi { 1425 value 73; 1426 description "Segment Routing - Traffic Engineering 1427 (SR-TE) SAFI"; 1428 } 1430 enum labeled-vpn-safi { 1431 value 128; 1432 description "MPLS Labeled VPN SAFI"; 1433 } 1435 enum multicast-mpls-vpn-safi { 1436 value 129; 1437 description "Multicast for BGP/MPLS IP VPN SAFI"; 1438 } 1439 enum route-target-safi { 1440 value 132; 1441 description "Route Target SAFI"; 1442 } 1444 enum ipv4-flow-spec-safi { 1445 value 133; 1446 description "IPv4 Flow Specification SAFI"; 1447 } 1449 enum vpnv4-flow-spec-safi { 1450 value 134; 1451 description "IPv4 VPN Flow Specification SAFI"; 1452 } 1454 enum vpn-auto-discovery-safi { 1455 value 140; 1456 description "VPN Auto-Discovery SAFI"; 1457 } 1458 } 1459 description "Enumeration for BGP Subsequent Address 1460 Family Identifier (SAFI) - RFC 4760."; 1461 } 1462 } 1464 1466 5. IANA Considerations 1468 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1469 actual RFC number (and remove this note). 1471 This document registers the following namespace URIs in the IETF XML 1472 registry [RFC3688]: 1474 -------------------------------------------------------------------- 1475 URI: urn:ietf:params:xml:ns:yang:ietf-routing-types 1476 Registrant Contact: The IESG. 1477 XML: N/A, the requested URI is an XML namespace. 1478 -------------------------------------------------------------------- 1480 -------------------------------------------------------------------- 1481 URI: urn:ietf:params:xml:ns:yang:iana-routing-types 1482 Registrant Contact: IANA 1483 XML: N/A, the requested URI is an XML namespace. 1484 -------------------------------------------------------------------- 1485 This document registers the following YANG modules in the YANG Module 1486 Names registry [RFC6020]: 1488 -------------------------------------------------------------------- 1489 name: ietf-routing-types 1490 namespace: urn:ietf:params:xml:ns:yang:ietf-routing-types 1491 prefix: rt-types 1492 reference: RFC XXXX 1493 -------------------------------------------------------------------- 1495 -------------------------------------------------------------------- 1496 name: iana-routing-types 1497 namespace: urn:ietf:params:xml:ns:yang:iana-routing-types 1498 prefix: iana-rt-types 1499 reference: RFC XXXX 1500 -------------------------------------------------------------------- 1502 5.1. IANA-Maintained iana-routing-types Module 1504 This document defines the initial version of the IANA-maintained 1505 iana-routing-types YANG module. 1507 The iana-routing-types YANG module is intended to reflect the 1508 "Address Family Numbers" registry [IANA-ADDRESS-FAMILY-REGISTRY] and 1509 "Subsequent Address Family Identifiers (SAFI) Parameters" registry 1510 [IANA-SAFI-REGISTRY]. 1512 IANA has added this notes to the "iana-routing-types YANG Module" 1513 registry: 1515 Address Families and Subsequent Address Families must not be 1516 directly added to the iana-routing-types YANG module. They must 1517 instead be respectively added to the "Address Family Numbers" 1518 and "Subsequent Address Family Identifiers (SAFI) Parameters" 1519 registries. 1521 When an Address Family or Subsequent Address Family is respectively 1522 added to the "Address Family Numbers" registry or the "Subsequent 1523 Address Family Identifiers (SAFI) Parameters" registry, a new 1524 "identity" statement must be added to the iana-routing-types YANG 1525 module. The name of the "identity" is the same as the corresponding 1526 address family or SAFI only it willl be a valid YANG identifier in 1527 all lowercase and with hyphens separating individual words in 1528 compound identifiers. The following substatements to the "identity" 1529 statement should be defined: 1531 "base": Contains the value "address-family" for address families 1532 or "bgp-safi" for subsequent address families. 1534 "status": Include only if a registration has been deprecated (use 1535 the value "deprecated") or obsoleted (use the value 1536 "obsolete"). 1538 "description": Replicate the description from the registry, 1539 if any. Insert line breaks as needed so that the 1540 line does not exceed 72 characters. 1542 "reference": Replicate the reference from the registry, if any, 1543 and add the title of the document. 1545 Unassigned or reserved values are not present in these modules. 1547 When the iana-routing-types YANG module is updated, a new "revision" 1548 statement must be added in front of the existing revision statements. 1550 IANA has added this new note to the the "Address Family Numbers" and 1551 "Subsequent Address Family Identifiers (SAFI) Parameters" registries: 1553 When this registry is modified, the YANG module 1554 iana-routing-types must be updated as defined in RFC XXXX. 1556 6. Security Considerations 1558 This document defines common data types using the YANG data modeling 1559 language. The definitions themselves have no security impact on the 1560 Internet, but the usage of these definitions in concrete YANG modules 1561 might have. The security considerations spelled out in the YANG 1562 specification [RFC7950] apply for this document as well. 1564 7. Acknowledgements 1566 The Routing Area Yang Architecture design team members included Acee 1567 Lindem, Anees Shaikh, Christian Hopps, Dean Bogdanovic, Ebben Aries, 1568 Lou Berger, Qin Wu, Rob Shakir, Xufeng Liu, and Yingzhen Qu. 1570 Thanks to Martin Bjorkland, Tom Petch, Stewart Bryant, and Radek 1571 Krejci for comments on the model and document text. Thanks to Jeff 1572 Haas and Robert Raszuk for suggestions for additional common routing 1573 types. 1575 8. References 1577 8.1. Normative References 1579 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1580 DOI 10.17487/RFC3688, January 2004, . 1583 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1584 the Network Configuration Protocol (NETCONF)", RFC 6020, 1585 DOI 10.17487/RFC6020, October 2010, . 1588 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1589 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1590 . 1592 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1593 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1594 . 1596 [IANA-ADDRESS-FAMILY-REGISTRY] 1597 "IANA Address Family Registry", 1598 . 1601 [IANA-SAFI-REGISTRY] 1602 "IANA Subsequent Address Family Identities (SAFI) 1603 Parameters Registry", . 1606 8.2. Informative References 1608 [IEEE754] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE 1609 Std 754-2008, August 2008. 1611 [I-D.ietf-bfd-yang] 1612 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 1613 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 1614 Detection (BFD)", draft-ietf-bfd-yang-06 (work in 1615 progress), June 2017. 1617 [I-D.ietf-idr-bgp-model] 1618 Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K., 1619 Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and 1620 X. Liu, "BGP Model for Service Provider Networks", draft- 1621 ietf-idr-bgp-model-02 (work in progress), July 2016. 1623 [I-D.ietf-ospf-yang] 1624 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1625 "Yang Data Model for OSPF Protocol", draft-ietf-ospf- 1626 yang-08 (work in progress), July 2017. 1628 [I-D.ietf-pim-yang] 1629 Liu, X., McAllister, P., Peter, A., Sivakumar, M., Liu, 1630 Y., and f. hu, "A YANG data model for Protocol-Independent 1631 Multicast (PIM)", draft-ietf-pim-yang-08 (work in 1632 progress), April 2017. 1634 [I-D.ietf-teas-yang-rsvp] 1635 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 1636 and H. Shah, "A YANG Data Model for Resource Reservation 1637 Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in 1638 progress), March 2017. 1640 [I-D.ietf-teas-yang-te] 1641 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 1642 I. Bryskin, "A YANG Data Model for Traffic Engineering 1643 Tunnels and Interfaces", draft-ietf-teas-yang-te-08 (work 1644 in progress), July 2017. 1646 [I-D.ietf-bess-l2vpn-yang] 1647 Shah, H., Brissette, P., Chen, I., Hussain, I., Wen, B., 1648 and K. Tiruveedhula, "YANG Data Model for MPLS-based 1649 L2VPN", draft-ietf-bess-l2vpn-yang-06 (work in progress), 1650 June 2017. 1652 [I-D.ietf-bess-l3vpn-yang] 1653 Jain, D., Patel, K., Brissette, P., Li, Z., Zhuang, S., 1654 Liu, X., Haas, J., Esale, S., and B. Wen, "Yang Data Model 1655 for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang-01 (work 1656 in progress), April 2017. 1658 [I-D.ietf-mpls-base-yang] 1659 Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., 1660 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 1661 Model for MPLS Base", draft-ietf-mpls-base-yang-05 (work 1662 in progress), July 2017. 1664 [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., 1665 Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack 1666 Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, 1667 . 1669 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1670 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1671 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1672 . 1674 [RFC3471] Berger, L., Ed., "Generalized Multi-Protocol Label 1675 Switching (GMPLS) Signaling Functional Description", 1676 RFC 3471, DOI 10.17487/RFC3471, January 2003, 1677 . 1679 [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private 1680 Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February 1681 2006, . 1683 [RFC4664] Andersson, L., Ed. and E. Rosen, Ed., "Framework for Layer 1684 2 Virtual Private Networks (L2VPNs)", RFC 4664, 1685 DOI 10.17487/RFC4664, September 2006, . 1688 [RFC5701] Rekhter, Y., "IPv6 Address Specific BGP Extended Community 1689 Attribute", RFC 5701, DOI 10.17487/RFC5701, November 2009, 1690 . 1692 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1693 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 1694 . 1696 [RFC7274] Kompella, K., Andersson, L., and A. Farrel, "Allocating 1697 and Retiring Special-Purpose MPLS Labels", RFC 7274, 1698 DOI 10.17487/RFC7274, June 2014, . 1701 [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., 1702 Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based 1703 Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February 1704 2015, . 1706 Authors' Addresses 1708 Xufeng Liu 1709 Jabil 1710 8281 Greensboro Drive, Suite 200 1711 McLean VA 22102 1712 USA 1714 EMail: Xufeng_Liu@jabil.com 1715 Yingzhen Qu 1716 Futurewei Technologies, Inc. 1717 2330 Central Expressway 1718 Santa Clara CA 95050 1719 USA 1721 EMail: yingzhen.qu@huawei.com 1723 Acee Lindem 1724 Cisco Systems 1725 301 Midenhall Way 1726 Cary, NC 27513 1727 USA 1729 EMail: acee@cisco.com 1731 Christian Hopps 1732 Deutsche Telekom 1734 EMail: chopps@chopps.org 1736 Lou Berger 1737 LabN Consulting, L.L.C. 1739 EMail: lberger@labn.net