idnits 2.17.1 draft-ietf-rtgwg-routing-types-09.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 581 has weird spacing: '...cluding a 2-o...' -- The document date (August 19, 2017) is 2442 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: A later version (-17) exists of draft-ietf-bfd-yang-06 == 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 == Outdated reference: A later version (-17) exists of draft-ietf-pim-yang-08 == 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 (~~), 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: February 20, 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 August 19, 2017 14 Routing Area Common YANG Data Types 15 draft-ietf-rtgwg-routing-types-09 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 February 20, 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 . . . . . . . . . . . . . . . . . . . . . 33 63 5.1. IANA-Maintained iana-routing-types Module . . . . . . . . 34 64 6. Security Considerations . . . . . . . . . . . . . . . . . . . 35 65 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 66 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 67 8.1. Normative References . . . . . . . . . . . . . . . . . . 35 68 8.2. Informative References . . . . . . . . . . . . . . . . . 36 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 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-08-16.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 Lui 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-06-29 { 327 description 328 "Initial revision."; 329 reference "RFC TBD: Routing YANG Data Types"; 330 } 332 /*** Identities related to MPLS/GMPLS ***/ 334 identity mpls-label-special-purpose-value { 335 description 336 "Base identity for deriving identities describing 337 special-purpose Multiprotocol Label Switching (MPLS) label 338 values."; 339 reference 340 "RFC7274: Allocating and Retiring Special-Purpose MPLS 341 Labels."; 342 } 344 identity ipv4-explicit-null-label { 345 base mpls-label-special-purpose-value; 346 description 347 "This identity represents the IPv4 Explicit NULL Label."; 348 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 349 } 351 identity router-alert-label { 352 base mpls-label-special-purpose-value; 353 description 354 "This identity represents the Router Alert Label."; 355 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 356 } 358 identity ipv6-explicit-null-label { 359 base mpls-label-special-purpose-value; 360 description 361 "This identity represents the IPv6 Explicit NULL Label."; 362 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 363 } 365 identity implicit-null-label { 366 base mpls-label-special-purpose-value; 367 description 368 "This identity represents the Implicit NULL Label."; 369 reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; 370 } 372 identity entropy-label-indicator { 373 base mpls-label-special-purpose-value; 374 description 375 "This identity represents the Entropy Label Indicator."; 376 reference 377 "RFC6790: The Use of Entropy Labels in MPLS Forwarding. 378 Sections 3 and 10.1."; 379 } 381 identity gal-label { 382 base mpls-label-special-purpose-value; 383 description 384 "This identity represents the Generic Associated Channel 385 Label (GAL)."; 386 reference 387 "RFC5586: MPLS Generic Associated Channel. 388 Sections 4 and 10."; 389 } 391 identity oam-alert-label { 392 base mpls-label-special-purpose-value; 393 description 394 "This identity represents the OAM Alert Label."; 395 reference 396 "RFC3429: Assignment of the 'OAM Alert Label' for 397 Multiprotocol Label Switching Architecture (MPLS) 398 Operation and Maintenance (OAM) Functions. 399 Sections 3 and 6."; 400 } 402 identity extension-label { 403 base mpls-label-special-purpose-value; 404 description 405 "This identity represents the Extension Label."; 406 reference 407 "RFC7274: Allocating and Retiring Special-Purpose MPLS 408 Labels. Sections 3.1 and 5."; 409 } 411 /*** Collection of types related to routing ***/ 413 typedef router-id { 414 type yang:dotted-quad; 415 description 416 "A 32-bit number in the dotted quad format assigned to each 417 router. This number uniquely identifies the router within 418 an Autonomous System."; 419 } 421 /*** Collection of types related to VPN ***/ 423 typedef route-target { 424 type string { 425 pattern 426 '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 427 + '6[0-4][0-9]{3}|' 428 + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' 429 + '42949672[0-8][0-9]|' 430 + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' 431 + '42949[0-5][0-9]{4}|' 432 + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' 433 + '42[0-8][0-9]{7}|4[01][0-9]{8}|' 434 + '[0-3]?[0-9]{0,8}[0-9]))|' 435 + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' 436 + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' 437 + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' 438 + '655[0-2][0-9]|' 439 + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' 440 + '[0-5]?[0-9]{0,3}[0-9]))|' 441 + '(2:(429496729[0-5]|42949672[0-8][0-9]|' 442 + '4294967[01][0-9]{2}|' 443 + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' 444 + '4294[0-8][0-9]{5}|' 445 + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' 446 + '[0-3]?[0-9]{0,8}[0-9]):' 447 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 448 + '6[0-4][0-9]{3}|' 449 + '[0-5]?[0-9]{0,3}[0-9]))|' 450 + '(6(:[a-fA-F0-9]{2}){6})|' 451 + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' 452 + '[0-9a-fA-F]{1,12})'; 453 } 454 description 455 "A route target is an 8-octet BGP extended community 456 initially identifying a set of sites in a BGP 457 VPN (RFC 4364). However, it has since taken on a more 458 general role in BGP route filtering. 459 A route target consists of two or three fields: 460 a 2-octet type field, an administrator field, 461 and, optionally, an assigned number field. 463 According to the data formats for type 0, 1, 2, and 6 464 defined in RFC4360, RFC5668, and RFC7432, the encoding 465 pattern is defined as: 467 0:2-octet-asn:4-octet-number 468 1:4-octet-ipv4addr:2-octet-number 469 2:4-octet-asn:2-octet-number. 470 6:6-octet-mac-address. 472 Additionally, a generic pattern is defined for future 473 route target types: 475 2-octet-other-hex-number:6-octet-hex-number 477 Some valid examples are: 0:100:100, 1:1.1.1.1:100, 478 2:1234567890:203 and 6:26:00:08:92:78:00"; 480 reference 481 "RFC4360: BGP Extended Communities Attribute. 482 RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) 483 RFC5668: 4-Octet AS Specific BGP Extended Community. 484 RFC7432: BGP MPLS-Based Ethernet VPN"; 485 } 487 typedef ipv6-route-target { 488 type string { 489 pattern 490 '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' 491 + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' 492 + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' 493 + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' 494 + ':' 495 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 496 + '6[0-4][0-9]{3}|' 497 + '[0-5]?[0-9]{0,3}[0-9])'; 498 pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' 499 + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' 500 + ':' 501 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 502 + '6[0-4][0-9]{3}|' 503 + '[0-5]?[0-9]{0,3}[0-9])'; 504 } 505 description 506 "An IPv6 route target is a 20-octet BGP IPv6 address 507 specific extended community serving the same function 508 as a standard 8-octet route target only allowing for 509 an IPv6 address as the global adminstrator. The format 510 is . 512 Some valid examples are: 2001:DB8::1:6544 and 513 2001:DB8::5eb1:791:6b37:17958"; 514 reference 515 "RFC5701: IPv6 Address Specific BGP Extended Community 516 Attribute"; 517 } 519 typedef route-target-type { 520 type enumeration { 521 enum "import" { 522 value 0; 523 description 524 "The route target applies to route import."; 525 } 526 enum "export" { 527 value 1; 528 description 529 "The route target applies to route export."; 530 } 531 enum "both" { 532 value 2; 533 description 534 "The route target applies to both route import and 535 route export."; 536 } 537 } 538 description 539 "Indicates the role a route target takes 540 in route filtering."; 541 reference "RFC4364: BGP/MPLS IP Virtual Private Networks 542 (VPNs)."; 543 } 545 typedef route-distinguisher { 546 type string { 547 pattern 548 '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 549 + '6[0-4][0-9]{3}|' 550 + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' 551 + '42949672[0-8][0-9]|' 552 + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' 553 + '42949[0-5][0-9]{4}|' 554 + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' 555 + '42[0-8][0-9]{7}|4[01][0-9]{8}|' 556 + '[0-3]?[0-9]{0,8}[0-9]))|' 557 + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' 558 + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' 559 + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' 560 + '655[0-2][0-9]|' 561 + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' 562 + '[0-5]?[0-9]{0,3}[0-9]))|' 563 + '(2:(429496729[0-5]|42949672[0-8][0-9]|' 564 + '4294967[01][0-9]{2}|' 565 + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' 566 + '4294[0-8][0-9]{5}|' 567 + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' 568 + '[0-3]?[0-9]{0,8}[0-9]):' 569 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 570 + '6[0-4][0-9]{3}|' 571 + '[0-5]?[0-9]{0,3}[0-9]))|' 572 + '(6(:[a-fA-F0-9]{2}){6})|' 573 + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' 574 + '[0-9a-fA-F]{1,12})'; 575 } 576 description 577 "A route distinguisher is an 8-octet value used to 578 distinguish routes from different BGP VPNs (RFC 4364). 579 As per RFC 4360, a route distinguisher will have the same 580 format as a route target and will consist of two or three 581 fields including a 2-octet type field, an administrator 582 field, and, optionally, an assigned number field. 584 According to the data formats for type 0, 1, 2, and 6 585 defined in RFC4360, RFC5668, and RFC7432, the encoding 586 pattern is defined as: 588 0:2-octet-asn:4-octet-number 589 1:4-octet-ipv4addr:2-octet-number 590 2:4-octet-asn:2-octet-number. 591 6:6-octet-mac-address. 593 Additionally, a generic pattern is defined for future 594 route discriminator types: 596 2-octet-other-hex-number:6-octet-hex-number 598 Some valid examples are: 0:100:100, 1:1.1.1.1:100, 599 2:1234567890:203 and 6:26:00:08:92:78:00"; 600 reference 601 "RFC4360: BGP Extended Communities Attribute. 602 RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) 603 RFC5668: 4-Octet AS Specific BGP Extended Community. 604 RFC7432: BGP MPLS-Based Ethernet VPN"; 605 } 607 typedef route-origin { 608 type string { 609 pattern 610 '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 611 + '6[0-4][0-9]{3}|' 612 + '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|' 613 + '42949672[0-8][0-9]|' 614 + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' 615 + '42949[0-5][0-9]{4}|' 616 + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' 617 + '42[0-8][0-9]{7}|4[01][0-9]{8}|' 618 + '[0-3]?[0-9]{0,8}[0-9]))|' 619 + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' 620 + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' 621 + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' 622 + '655[0-2][0-9]|' 623 + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' 624 + '[0-5]?[0-9]{0,3}[0-9]))|' 625 + '(2:(429496729[0-5]|42949672[0-8][0-9]|' 626 + '4294967[01][0-9]{2}|' 627 + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' 628 + '4294[0-8][0-9]{5}|' 629 + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' 630 + '[0-3]?[0-9]{0,8}[0-9]):' 631 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 632 + '6[0-4][0-9]{3}|' 633 + '[0-5]?[0-9]{0,3}[0-9]))|' 634 + '(6:[a-fA-F0-9]{1,2}){6}|' 635 + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' 636 + '[0-9a-fA-F]{1,12})'; 637 } 638 description 639 "A route origin is an 8-octet BGP extended community 640 identifying the set of sites where the BGP route 641 originated (RFC 4364). A route target consists of two 642 or three fields: a 2-octet type field, an administrator 643 field, and, optionally, an assigned number field. 645 According to the data formats for type 0, 1, 2, and 6 646 defined in RFC4360, RFC5668, and RFC7432, the encoding 647 pattern is defined as: 649 0:2-octet-asn:4-octet-number 650 1:4-octet-ipv4addr:2-octet-number 651 2:4-octet-asn:2-octet-number. 652 6:6-octet-mac-address. 654 Additionally, a generic pattern is defined for future 655 route origin types: 657 2-octet-other-hex-number:6-octet-hex-number 659 Some valid examples are: 0:100:100, 1:1.1.1.1:100, 660 2:1234567890:203 and 6:26:00:08:92:78:00"; 661 reference 662 "RFC4360: BGP Extended Communities Attribute. 663 RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs) 664 RFC5668: 4-Octet AS Specific BGP Extended Community. 665 RFC7432: BGP MPLS-Based Ethernet VPN"; 666 } 668 typedef ipv6-route-origin { 669 type string { 670 pattern 671 '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' 672 + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' 673 + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' 674 + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' 675 + ':' 676 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 677 + '6[0-4][0-9]{3}|' 678 + '[0-5]?[0-9]{0,3}[0-9])'; 679 pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' 680 + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' 681 + ':' 682 + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' 683 + '6[0-4][0-9]{3}|' 684 + '[0-5]?[0-9]{0,3}[0-9])'; 685 } 686 description 687 "An IPv6 route origin is a 20-octet BGP IPv6 address 688 specific extended community serving the same function 689 as a standard 8-octet route only only allowing for 690 an IPv6 address as the global adminstrator. The format 691 is . 693 Some valid examples are: 2001:DB8::1:6544 and 694 2001:DB8::5eb1:791:6b37:17958"; 695 reference 696 "RFC5701: IPv6 Address Specific BGP Extended Community 697 Attribute"; 698 } 700 /*** Collection of types common to multicast ***/ 702 typedef ipv4-multicast-group-address { 703 type inet:ipv4-address { 704 pattern '(2((2[4-9])|(3[0-9]))\.).*'; 705 } 706 description 707 "This type represents an IPv4 multicast group address, 708 which is in the range from 224.0.0.0 to 239.255.255.255."; 709 reference "RFC1112: Host Extensions for IP Multicasting."; 710 } 712 typedef ipv6-multicast-group-address { 713 type inet:ipv6-address { 714 pattern 715 '(([fF]{2}[0-9a-fA-F]{2}):).*'; 716 } 717 description 718 "This type represents an IPv6 multicast group address, 719 which is in the range of FF00::/8."; 721 reference 722 "RFC4291: IP Version 6 Addressing Architecture. Sec 2.7. 723 RFC7346: IPv6 Multicast Address Scopes."; 724 } 726 typedef ip-multicast-group-address { 727 type union { 728 type ipv4-multicast-group-address; 729 type ipv6-multicast-group-address; 730 } 731 description 732 "This type represents a version-neutral IP multicast group 733 address. The format of the textual representation implies 734 the IP version."; 735 } 737 typedef ipv4-multicast-source-address { 738 type union { 739 type enumeration { 740 enum "*" { 741 description 742 "Any source address."; 743 } 744 } 745 type inet:ipv4-address; 746 } 747 description 748 "Multicast source IPv4 address type."; 749 } 751 typedef ipv6-multicast-source-address { 752 type union { 753 type enumeration { 754 enum "*" { 755 description 756 "Any source address."; 757 } 758 } 759 type inet:ipv6-address; 760 } 761 description 762 "Multicast source IPv6 address type."; 763 } 765 /*** Collection of types common to protocols ***/ 767 typedef bandwidth-ieee-float32 { 768 type string { 769 pattern 770 '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' 771 + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' 772 + '1[01][0-9]|0?[0-9]?[0-9])?)'; 773 } 774 description 775 "Bandwidth in IEEE 754 floating point 32-bit binary format: 776 (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), 777 where Exponent uses 8 bits, and Fraction uses 23 bits. 778 The units are octets per second. 779 The encoding format is the external hexadecimal-significant 780 character sequences specified in IEEE 754 and C99. The 781 format is restricted to be normalized, non-negative, and 782 non-fraction: 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D 783 where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are 784 integers in the range of [0..127]. 785 When six hexadecimal digits are used for 'hhhhhh' or 786 'HHHHHH', the least significant digit must be an even 787 number. 'x' and 'X' indicate hexadecimal; 'p' and 'P' 788 indicate power of two. Some examples are: 0x0p0, 0x1p10, and 789 0x1.abcde2p+20"; 790 reference 791 "IEEE Std 754-2008: IEEE Standard for Floating-Point 792 Arithmetic."; 793 } 795 typedef link-access-type { 796 type enumeration { 797 enum "broadcast" { 798 description 799 "Specify broadcast multi-access network."; 800 } 801 enum "non-broadcast-multiaccess" { 802 description 803 "Specify Non-Broadcast Multi-Access (NBMA) network."; 804 } 805 enum "point-to-multipoint" { 806 description 807 "Specify point-to-multipoint network."; 808 } 809 enum "point-to-point" { 810 description 811 "Specify point-to-point network."; 812 } 813 } 814 description 815 "Link access type."; 816 } 817 typedef timer-multiplier { 818 type uint8; 819 description 820 "The number of timer value intervals that should be 821 interpreted as a failure."; 822 } 824 typedef timer-value-seconds16 { 825 type union { 826 type uint16 { 827 range "1..65535"; 828 } 829 type enumeration { 830 enum "infinity" { 831 description 832 "The timer is set to infinity."; 833 } 834 enum "not-set" { 835 description 836 "The timer is not set."; 837 } 838 } 839 } 840 units "seconds"; 841 description 842 "Timer value type, in seconds (16-bit range)."; 843 } 845 typedef timer-value-seconds32 { 846 type union { 847 type uint32 { 848 range "1..4294967295"; 849 } 850 type enumeration { 851 enum "infinity" { 852 description 853 "The timer is set to infinity."; 854 } 855 enum "not-set" { 856 description 857 "The timer is not set."; 858 } 859 } 860 } 861 units "seconds"; 862 description 863 "Timer value type, in seconds (32-bit range)."; 864 } 865 typedef timer-value-milliseconds { 866 type union { 867 type uint32 { 868 range "1..4294967295"; 869 } 870 type enumeration { 871 enum "infinity" { 872 description 873 "The timer is set to infinity."; 874 } 875 enum "not-set" { 876 description 877 "The timer is not set."; 878 } 879 } 880 } 881 units "milliseconds"; 882 description 883 "Timer value type, in milliseconds."; 884 } 886 typedef percentage { 887 type uint8 { 888 range "0..100"; 889 } 890 description 891 "Integer indicating a percentage value"; 892 } 894 typedef timeticks64 { 895 type uint64; 896 description 897 "This type is based on the timeticks type defined in 898 RFC 6991, but with 64-bit width. It represents the time, 899 modulo 2^64, in hundredths of a second between two epochs."; 900 reference "RFC 6991 - Common YANG Data Types"; 901 } 903 typedef uint24 { 904 type uint32 { 905 range "0 .. 16777215"; 906 } 907 description 908 "24-bit unsigned integer"; 909 } 911 /*** Collection of types related to MPLS/GMPLS ***/ 912 typedef generalized-label { 913 type binary; 914 description 915 "Generalized label. Nodes sending and receiving the 916 Generalized Label are aware of the link-specific 917 label context and type."; 918 reference "RFC3471: Section 3.2"; 919 } 921 typedef mpls-label-special-purpose { 922 type identityref { 923 base mpls-label-special-purpose-value; 924 } 925 description 926 "This type represents the special-purpose Multiprotocol Label 927 Switching (MPLS) label values."; 928 reference 929 "RFC3032: MPLS Label Stack Encoding. 930 RFC7274: Allocating and Retiring Special-Purpose MPLS 931 Labels."; 932 } 934 typedef mpls-label-general-use { 935 type uint32 { 936 range "16..1048575"; 937 } 938 description 939 "The 20-bit label values in an MPLS label stack entry, 940 specified in RFC3032. This label value does not include 941 the encodings of Traffic Class and TTL (time to live). 942 The label range specified by this type is for general use, 943 with special-purpose MPLS label values excluded."; 944 reference "RFC3032: MPLS Label Stack Encoding."; 945 } 947 typedef mpls-label { 948 type union { 949 type mpls-label-special-purpose; 950 type mpls-label-general-use; 951 } 952 description 953 "The 20-bit label values in an MPLS label stack entry, 954 specified in RFC3032. This label value does not include 955 the encodings of Traffic Class and TTL (time to live)."; 956 reference "RFC3032: MPLS Label Stack Encoding."; 957 } 959 /*** Groupings **/ 960 grouping mpls-label-stack { 961 description 962 "A grouping that specifies an MPLS label stack. List 963 entries are ordered with the first entry being the 964 top of stack, the next entry being the next entry 965 on the stack, and so on."; 966 container mpls-label-stack { 967 description 968 "Container for a list of MPLS label stack entries."; 969 list entry { 970 key "id"; 971 description 972 "List of MPLS label stack entries."; 973 leaf id { 974 type uint8; 975 description 976 "Identifies the entry in a sequence of an MPLS label 977 stack entries. An entry with smaller ID value is 978 precedes an entry in the label stack with a smaller 979 ID. The value of this id has no semantic meaning other 980 than ordering 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 } 1005 } 1006 } 1007 grouping vpn-route-targets { 1008 description 1009 "A grouping that specifies Route Target import-export rules 1010 used in the BGP enabled Virtual Private Networks (VPNs)."; 1011 reference 1012 "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs). 1013 RFC4664: Framework for Layer 2 Virtual Private Networks 1014 (L2VPNs)"; 1015 list vpn-target { 1016 key "route-target"; 1017 description 1018 "List of Route Targets."; 1019 leaf route-target { 1020 type rt-types:route-target; 1021 description 1022 "Route Target value"; 1023 } 1024 leaf route-target-type { 1025 type rt-types:route-target-type; 1026 mandatory true; 1027 description 1028 "Import/export type of the Route Target."; 1029 } 1030 } 1031 } 1032 } 1034 1036 4. IANA Routing Types YANG Module 1038 file "iana-routing-types@2017-06-29.yang" 1039 module iana-routing-types { 1040 namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; 1041 prefix iana-rt-types; 1043 organization 1044 "IANA"; 1045 contact 1046 " Internet Assigned Numbers Authority 1048 Postal: ICANN 1049 4676 Admiralty Way, Suite 330 1050 Marina del Rey, CA 90292 1052 Tel: +1 310 823 9358 1053 "; 1054 description 1055 "This module contains a collection of YANG data types 1056 considered defined by IANA and used for routing 1057 protocols. 1059 Copyright (c) 2017 IETF Trust and the persons 1060 identified as authors of the code. All rights reserved. 1062 Redistribution and use in source and binary forms, with or 1063 without modification, is permitted pursuant to, and subject 1064 to the license terms contained in, the Simplified BSD License 1065 set forth in Section 4.c of the IETF Trust's Legal Provisions 1066 Relating to IETF Documents 1067 (http://trustee.ietf.org/license-info). 1069 This version of this YANG module is part of RFC XXXX; see 1070 the RFC itself for full legal notices."; 1071 reference "RFC XXXX"; 1073 revision 2017-06-29 { 1074 description 1075 "Initial revision."; 1076 reference "RFC TBD: IANA Routing YANG Data Types"; 1077 } 1079 /*** Collection of IANA types related to routing ***/ 1080 /*** IANA address family Identities ***/ 1082 identity address-family { 1083 description 1084 "Base identity from which identities describing address 1085 families are derived."; 1086 } 1088 identity ipv4 { 1089 base address-family; 1090 description 1091 "IPv4 Address Family - IANA Registry Assigned Number: 1"; 1092 } 1094 identity ipv6 { 1095 base address-family; 1096 description 1097 "IPv6 Address Family - IANA Registry Assigned Number: 2"; 1098 } 1100 identity nsap { 1101 base address-family; 1102 description 1103 "OSI Network Service Access Point (NSAP) Address Family - 1104 IANA Registry Assigned Number: 3"; 1105 } 1107 identity hdlc { 1108 base address-family; 1109 description 1110 "High-Level Data Link Control (HDLC) Address Family - 1111 IANA Registry Assigned Number: 4"; 1112 } 1114 identity bbn1822 { 1115 base address-family; 1116 description 1117 "Bolt, Beranek, and Newman Report 1822 (BBN 1822) 1118 Address Family - IANA Registry Assigned Number: 5"; 1119 } 1121 identity ieee802 { 1122 base address-family; 1123 description 1124 "IEEE 802 Committee Address Family (aka, MAC address) - 1125 IANA Registry Assigned Number: 6"; 1126 } 1128 identity e163 { 1129 base address-family; 1130 description 1131 "ITU-T E.163 Address Family - 1132 IANA Registry Assigned Number: 7"; 1133 } 1135 identity e164 { 1136 base address-family; 1137 description 1138 "ITU-T E.164 (SMDS, Frame Relay, ATM) Address Family - 1139 IANA Registry Assigned Number: 8"; 1140 } 1142 identity f69 { 1143 base address-family; 1144 description 1145 "ITU-T F.69 (Telex) Address Family - 1146 IANA Registry Assigned Number: 9"; 1147 } 1149 identity x121 { 1150 base address-family; 1151 description 1152 "ITU-T X.121 (X.25, Frame Relay) Address Family - 1153 IANA Registry Assigned Number: 10"; 1154 } 1156 identity ipx { 1157 base address-family; 1158 description 1159 "Novell Internetwork Packet Exchange (IPX) 1160 Address Family - IANA Registry Assigned Number: 11"; 1161 } 1163 identity appletalk { 1164 base address-family; 1165 description 1166 "Apple AppleTalk Address Family - 1167 IANA Registry Assigned Number: 12"; 1168 } 1170 identity decnet-iv { 1171 base address-family; 1172 description 1173 "Digital Equipment DECnet Phase IV Address Family - 1174 IANA Registry Assigned Number: 13"; 1175 } 1177 identity vines { 1178 base address-family; 1179 description 1180 "Banyan Vines Address Family - 1181 IANA Registry Assigned Number: 14"; 1182 } 1184 identity e164-nsap { 1185 base address-family; 1186 description 1187 "ITU-T E.164 with NSAP sub-address Address Family - 1188 IANA Registry Assigned Number: 15"; 1189 } 1191 identity dns { 1192 base address-family; 1193 description 1194 "Domain Name System (DNS) Address Family - 1195 IANA Registry Assigned Number: 16"; 1196 } 1198 identity distinguished-name { 1199 base address-family; 1200 description 1201 "Distinguished Name Address Family - 1202 IANA Registry Assigned Number: 17"; 1203 } 1205 identity as-num { 1206 base address-family; 1207 description 1208 "AS Number Family - 1209 IANA Registry Assigned Number: 18"; 1210 } 1212 identity xtp-v4 { 1213 base address-family; 1214 description 1215 "Xpress Transport Protocol (XTP) over IPv4 1216 Address Family - IANA Registry Assigned Number: 19"; 1217 } 1219 identity xtp-v6 { 1220 base address-family; 1221 description 1222 "Xpress Transport Protocol (XTP) over IPv4 1223 Address Family - IANA Registry Assigned Number: 20"; 1224 } 1226 identity xtp-native { 1227 base address-family; 1228 description 1229 "Xpress Transport Protocol (XTP) native mode 1230 Address Family - IANA Registry Assigned Number: 21"; 1231 } 1233 identity fc-port { 1234 base address-family; 1235 description 1236 "Fibre Channel (FC) World-Wide Port Name 1237 Address Family - IANA Registry Assigned Number: 22"; 1238 } 1240 identity fc-node { 1241 base address-family; 1242 description 1243 "Fibre Channel (FC) World-Wide Node Name 1244 Address Family - IANA Registry Assigned Number: 23"; 1245 } 1246 identity gwid { 1247 base address-family; 1248 description 1249 "ATM Gateway Identifier (GWID) Number Family - 1250 IANA Registry Assigned Number: 24"; 1251 } 1253 identity l2vpn { 1254 base address-family; 1255 description 1256 "Layer-2 VPN (L2VPN) Address Family - 1257 IANA Registry Assigned Number: 25"; 1258 } 1260 identity mpls-tp-section-eid { 1261 base address-family; 1262 description 1263 "MPLS-TP Section Endpoint Identifier Address Family - 1264 IANA Registry Assigned Number: 26"; 1265 } 1267 identity mpls-tp-lsp-eid { 1268 base address-family; 1269 description 1270 "MPLS-TP LSP Endpoint Identifier Address Family - 1271 IANA Registry Assigned Number: 27"; 1272 } 1274 identity mpls-tp-pwe-eid { 1275 base address-family; 1276 description 1277 "MPLS-TP Pseudowire Endpoint Identifier 1278 Address Family - IANA Registry Assigned Number: 28"; 1279 } 1281 identity mt-v4 { 1282 base address-family; 1283 description 1284 "Multi-Topology IPv4 Address Family - 1285 Address Family - IANA Registry Assigned Number: 29"; 1286 } 1288 identity mt-v6 { 1289 base address-family; 1290 description 1291 "Multi-Topology IPv6 Address Family - 1292 Address Family - IANA Registry Assigned Number: 30"; 1293 } 1294 identity eigrp-common-sf { 1295 base address-family; 1296 description 1297 "Enhanced Interior Gateway Routing Protocol (EIGRP) 1298 Common Service Family Address Family - 1299 IANA Registry Assigned Number: 16384"; 1300 } 1302 identity eigrp-v4-sf { 1303 base address-family; 1304 description 1305 "Enhanced Interior Gateway Routing Protocol (EIGRP) 1306 IPv4 Service Family Address Family - 1307 IANA Registry Assigned Number: 16385"; 1308 } 1310 identity eigrp-v6-sf { 1311 base address-family; 1312 description 1313 "Enhanced Interior Gateway Routing Protocol (EIGRP) 1314 IPv6 Service Family Address Family - 1315 IANA Registry Assigned Number: 16386"; 1316 } 1318 identity lcaf { 1319 base address-family; 1320 description 1321 "LISP Canonical Address Format (LCAF) 1322 Address Family - IANA Registry Assigned Number: 16387"; 1323 } 1325 identity bgp-ls { 1326 base address-family; 1327 description 1328 "Border Gatway Protocol - Link State (BGP-LS) 1329 Address Family - IANA Registry Assigned Number: 16388"; 1330 } 1332 identity mac-48 { 1333 base address-family; 1334 description 1335 "IEEE 48-bit Media Access Control (MAC) 1336 Address Family - IANA Registry Assigned Number: 16389"; 1337 } 1339 identity mac-64 { 1340 base address-family; 1341 description 1342 "IEEE 64-bit Media Access Control (MAC) 1343 Address Family - IANA Registry Assigned Number: 16390"; 1344 } 1346 identity trill-oui { 1347 base address-family; 1348 description 1349 "TRILL IEEE Organizationally Unique Identifier (OUI) - 1350 Address Family - IANA Registry Assigned Number: 16391"; 1351 } 1353 identity trill-mac-24 { 1354 base address-family; 1355 description 1356 "TRILL Final 3 octets of 48-bit MAC address 1357 Address Family - IANA Registry Assigned Number: 16392"; 1358 } 1360 identity trill-mac-48 { 1361 base address-family; 1362 description 1363 "TRILL Final 5 octets of 64-bit MAC address 1364 Address Family - IANA Registry Assigned Number: 16393"; 1365 } 1367 identity trill-rbridge-port-id { 1368 base address-family; 1369 description 1370 "TRILL Remote Bridge (RBridge) Port ID 1371 Address Family - IANA Registry Assigned Number: 16394"; 1372 } 1374 identity trill-nickname { 1375 base address-family; 1376 description 1377 "TRILL Nickname 1378 Address Family - IANA Registry Assigned Number: 16395"; 1379 } 1381 /*** SAFIs for Multi-Protocol BGP Identities ***/ 1383 identity bgp-safi { 1384 description 1385 "Base identity from which identities describing BGP 1386 Subsequent Address Family Identifier (SAFI) - RFC 4760."; 1387 } 1389 identity unicast-safi { 1390 base bgp-safi; 1391 description 1392 "Unicast SAFI - 1393 IANA Registry Assigned Number: 1"; 1394 } 1396 identity multicast-safi { 1397 base bgp-safi; 1398 description 1399 "Multicast SAFI - 1400 IANA Registry Assigned Number: 2"; 1401 } 1403 identity labeled-unicast-safi { 1404 base bgp-safi; 1405 description 1406 "Labeled Unicast SAFI - 1407 IANA Registry Assigned Number: 4"; 1408 } 1410 identity multicast-vpn-safi { 1411 base bgp-safi; 1412 description 1413 "Multicast VPN SAFI - 1414 IANA Registry Assigned Number: 5"; 1415 } 1417 identity pseudowire-safi { 1418 base bgp-safi; 1419 description 1420 "Multi-segment Pseudowire VPN SAFI - 1421 IANA Registry Assigned Number: 6"; 1422 } 1424 identity tunnel-enap-safi { 1425 base bgp-safi; 1426 description 1427 "Tunnel Encap SAFI - 1428 IANA Registry Assigned Number: 7"; 1429 } 1431 identity mcast-vpls-safi { 1432 base bgp-safi; 1433 description 1434 "Multicast Virtual Private LAN Service (VPLS) SAFI - 1435 IANA Registry Assigned Number: 8"; 1436 } 1437 identity tunnel-safi { 1438 base bgp-safi; 1439 description 1440 "Tunnel SAFI - 1441 IANA Registry Assigned Number: 64"; 1442 } 1444 identity vpls-safi { 1445 base bgp-safi; 1446 description 1447 "Virtual Private LAN Service (VPLS) SAFI - 1448 IANA Registry Assigned Number: 65"; 1449 } 1451 identity mdt-safi { 1452 base bgp-safi; 1453 description 1454 "Multicast Distribution Tree (MDT) SAFI - 1455 IANA Registry Assigned Number: 66"; 1456 } 1458 identity v4-over-v6-safi { 1459 base bgp-safi; 1460 description 1461 "IPv4 over IPv6 SAFI - 1462 IANA Registry Assigned Number: 67"; 1463 } 1465 identity v6-over-v4-safi { 1466 base bgp-safi; 1467 description 1468 "IPv6 over IPv4 SAFI - 1469 IANA Registry Assigned Number: 68"; 1470 } 1472 identity l1-vpn-auto-discovery-safi { 1473 base bgp-safi; 1474 description 1475 "Layer-1 VPN Auto Discovery SAFI - 1476 IANA Registry Assigned Number: 69"; 1477 } 1479 identity evpn-safi { 1480 base bgp-safi; 1481 description 1482 "Ethernet VPN (EVPN) SAFI - 1483 IANA Registry Assigned Number: 70"; 1484 } 1485 identity bgp-ls-safi { 1486 base bgp-safi; 1487 description 1488 "BGP Link-State (BGP-LS) SAFI - 1489 IANA Registry Assigned Number: 71"; 1490 } 1492 identity bgp-ls-vpn-safi { 1493 base bgp-safi; 1494 description 1495 "BGP Link-State (BGP-LS) VPN SAFI - 1496 IANA Registry Assigned Number: 72"; 1497 } 1499 identity sr-te-safi { 1500 base bgp-safi; 1501 description 1502 "Segment Routing - Traffic Engineering (SR-TE) SAFI - 1503 IANA Registry Assigned Number: 73"; 1504 } 1506 identity labeled-vpn-safi { 1507 base bgp-safi; 1508 description 1509 "MPLS Labeled VPN SAFI - 1510 IANA Registry Assigned Number: 128"; 1511 } 1513 identity multicast-mpls-vpn-safi { 1514 base bgp-safi; 1515 description 1516 "Multicast for BGP/MPLS IP VPN SAFI - 1517 IANA Registry Assigned Number: 129"; 1518 } 1520 identity route-target-safi { 1521 base bgp-safi; 1522 description 1523 "Route Target SAFI - 1524 IANA Registry Assigned Number: 132"; 1525 } 1527 identity ipv4-flow-spec-safi { 1528 base bgp-safi; 1529 description 1530 "IPv4 Flow Specification SAFI - 1531 IANA Registry Assigned Number: 133"; 1532 } 1533 identity vpnv4-flow-spec-safi { 1534 base bgp-safi; 1535 description 1536 "IPv4 VPN Flow Specification SAFI - 1537 IANA Registry Assigned Number: 134"; 1538 } 1539 } 1541 1543 5. IANA Considerations 1545 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1546 actual RFC number (and remove this note). 1548 This document registers the following namespace URIs in the IETF XML 1549 registry [RFC3688]: 1551 -------------------------------------------------------------------- 1552 URI: urn:ietf:params:xml:ns:yang:ietf-routing-types 1553 Registrant Contact: The IESG. 1554 XML: N/A, the requested URI is an XML namespace. 1555 -------------------------------------------------------------------- 1557 -------------------------------------------------------------------- 1558 URI: urn:ietf:params:xml:ns:yang:iana-routing-types 1559 Registrant Contact: IANA 1560 XML: N/A, the requested URI is an XML namespace. 1561 -------------------------------------------------------------------- 1563 This document registers the following YANG modules in the YANG Module 1564 Names registry [RFC6020]: 1566 -------------------------------------------------------------------- 1567 name: ietf-routing-types 1568 namespace: urn:ietf:params:xml:ns:yang:ietf-routing-types 1569 prefix: rt-types 1570 reference: RFC XXXX 1571 -------------------------------------------------------------------- 1573 -------------------------------------------------------------------- 1574 name: iana-routing-types 1575 namespace: urn:ietf:params:xml:ns:yang:iana-routing-types 1576 prefix: iana-rt-types 1577 reference: RFC XXXX 1578 -------------------------------------------------------------------- 1580 5.1. IANA-Maintained iana-routing-types Module 1582 This document defines the initial version of the IANA-maintained 1583 iana-routing-types YANG module. 1585 The iana-routing-types YANG module is intended to reflect the 1586 "Address Family Numbers" registry [IANA-ADDRESS-FAMILY-REGISTRY] and 1587 "Subsequent Address Family Identifiers (SAFI) Parameters" registry 1588 [IANA-SAFI-REGISTRY]. 1590 IANA has added this notes to the "iana-routing-types YANG Module" 1591 registry: 1593 Address Families and Subsequent Address Families must not be 1594 directly added to the iana-routing-types YANG module. They must 1595 instead be respectively added to the "Address Family Numbers" 1596 and "Subsequent Address Family Identifiers (SAFI) Parameters" 1597 registries. 1599 When an Address Family or Subsequent Address Family is respectively 1600 added to the "Address Family Numbers" registry or the "Subsequent 1601 Address Family Identifiers (SAFI) Parameters" registry, a new 1602 "identity" statement must be added to the iana-routing-types YANG 1603 module. The name of the "identity" is the same as the corresponding 1604 address family or SAFI only it willl be a valid YANG identifier in 1605 all lowercase and with hyphens separating individual words in 1606 compound identifiers. The following substatements to the "identity" 1607 statement should be defined: 1609 "base": Contains the value "address-family" for address families 1610 or "bgp-safi" for subsequent address families. 1612 "status": Include only if a registration has been deprecated (use 1613 the value "deprecated") or obsoleted (use the value 1614 "obsolete"). 1616 "description": Replicate the description from the registry, 1617 if any. Insert line breaks as needed so that the 1618 line does not exceed 72 characters. 1620 "reference": Replicate the reference from the registry, if any, 1621 and add the title of the document. 1623 Unassigned or reserved values are not present in these modules. 1625 When the iana-routing-types YANG module is updated, a new "revision" 1626 statement must be added in front of the existing revision statements. 1628 IANA has added this new note to the the "Address Family Numbers" and 1629 "Subsequent Address Family Identifiers (SAFI) Parameters" registries: 1631 When this registry is modified, the YANG module 1632 iana-routing-types must be updated as defined in RFC XXXX. 1634 6. Security Considerations 1636 This document defines common data types using the YANG data modeling 1637 language. The definitions themselves have no security impact on the 1638 Internet, but the usage of these definitions in concrete YANG modules 1639 might have. The security considerations spelled out in the YANG 1640 specification [RFC7950] apply for this document as well. 1642 7. Acknowledgements 1644 The Routing Area Yang Architecture design team members included Acee 1645 Lindem, Anees Shaikh, Christian Hopps, Dean Bogdanovic, Ebben Aries, 1646 Lou Berger, Qin Wu, Rob Shakir, Xufeng Liu, and Yingzhen Qu. 1648 Thanks to Martin Bjorkland, Tom Petch, Stewart Bryant, and Radek 1649 Krejci for comments on the model and document text. Thanks to Jeff 1650 Haas and Robert Raszuk for suggestions for additional common routing 1651 types. 1653 8. References 1655 8.1. Normative References 1657 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1658 DOI 10.17487/RFC3688, January 2004, 1659 . 1661 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1662 the Network Configuration Protocol (NETCONF)", RFC 6020, 1663 DOI 10.17487/RFC6020, October 2010, 1664 . 1666 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1667 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1668 . 1670 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1671 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1672 . 1674 [IANA-ADDRESS-FAMILY-REGISTRY] 1675 "IANA Address Family Registry", 1676 . 1679 [IANA-SAFI-REGISTRY] 1680 "IANA Subsequent Address Family Identities (SAFI) 1681 Parameters Registry", . 1684 8.2. Informative References 1686 [IEEE754] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE 1687 Std 754-2008, August 2008. 1689 [I-D.ietf-bfd-yang] 1690 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 1691 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 1692 Detection (BFD)", draft-ietf-bfd-yang-06 (work in 1693 progress), June 2017. 1695 [I-D.ietf-idr-bgp-model] 1696 Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K., 1697 Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and 1698 X. Liu, "BGP Model for Service Provider Networks", draft- 1699 ietf-idr-bgp-model-02 (work in progress), July 2016. 1701 [I-D.ietf-ospf-yang] 1702 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1703 "Yang Data Model for OSPF Protocol", draft-ietf-ospf- 1704 yang-08 (work in progress), July 2017. 1706 [I-D.ietf-pim-yang] 1707 Liu, X., McAllister, P., Peter, A., Sivakumar, M., Liu, 1708 Y., and f. hu, "A YANG data model for Protocol-Independent 1709 Multicast (PIM)", draft-ietf-pim-yang-08 (work in 1710 progress), April 2017. 1712 [I-D.ietf-teas-yang-rsvp] 1713 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 1714 and H. Shah, "A YANG Data Model for Resource Reservation 1715 Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in 1716 progress), March 2017. 1718 [I-D.ietf-teas-yang-te] 1719 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 1720 I. Bryskin, "A YANG Data Model for Traffic Engineering 1721 Tunnels and Interfaces", draft-ietf-teas-yang-te-08 (work 1722 in progress), July 2017. 1724 [I-D.ietf-bess-l2vpn-yang] 1725 Shah, H., Brissette, P., Chen, I., Hussain, I., Wen, B., 1726 and K. Tiruveedhula, "YANG Data Model for MPLS-based 1727 L2VPN", draft-ietf-bess-l2vpn-yang-06 (work in progress), 1728 June 2017. 1730 [I-D.ietf-bess-l3vpn-yang] 1731 Jain, D., Patel, K., Brissette, P., Li, Z., Zhuang, S., 1732 Liu, X., Haas, J., Esale, S., and B. Wen, "Yang Data Model 1733 for BGP/MPLS L3 VPNs", draft-ietf-bess-l3vpn-yang-01 (work 1734 in progress), April 2017. 1736 [I-D.ietf-mpls-base-yang] 1737 Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., 1738 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 1739 Model for MPLS Base", draft-ietf-mpls-base-yang-05 (work 1740 in progress), July 2017. 1742 [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., 1743 Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack 1744 Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, 1745 . 1747 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1748 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1749 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1750 . 1752 [RFC3471] Berger, L., Ed., "Generalized Multi-Protocol Label 1753 Switching (GMPLS) Signaling Functional Description", 1754 RFC 3471, DOI 10.17487/RFC3471, January 2003, 1755 . 1757 [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private 1758 Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February 1759 2006, . 1761 [RFC4664] Andersson, L., Ed. and E. Rosen, Ed., "Framework for Layer 1762 2 Virtual Private Networks (L2VPNs)", RFC 4664, 1763 DOI 10.17487/RFC4664, September 2006, 1764 . 1766 [RFC5701] Rekhter, Y., "IPv6 Address Specific BGP Extended Community 1767 Attribute", RFC 5701, DOI 10.17487/RFC5701, November 2009, 1768 . 1770 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 1771 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 1772 . 1774 [RFC7274] Kompella, K., Andersson, L., and A. Farrel, "Allocating 1775 and Retiring Special-Purpose MPLS Labels", RFC 7274, 1776 DOI 10.17487/RFC7274, June 2014, 1777 . 1779 [RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., 1780 Uttaro, J., Drake, J., and W. Henderickx, "BGP MPLS-Based 1781 Ethernet VPN", RFC 7432, DOI 10.17487/RFC7432, February 1782 2015, . 1784 Authors' Addresses 1786 Xufeng Liu 1787 Jabil 1788 8281 Greensboro Drive, Suite 200 1789 McLean VA 22102 1790 USA 1792 EMail: Xufeng_Liu@jabil.com 1794 Yingzhen Qu 1795 Futurewei Technologies, Inc. 1796 2330 Central Expressway 1797 Santa Clara CA 95050 1798 USA 1800 EMail: yingzhen.qu@huawei.com 1802 Acee Lindem 1803 Cisco Systems 1804 301 Midenhall Way 1805 Cary, NC 27513 1806 USA 1808 EMail: acee@cisco.com 1809 Christian Hopps 1810 Deutsche Telekom 1812 EMail: chopps@chopps.org 1814 Lou Berger 1815 LabN Consulting, L.L.C. 1817 EMail: lberger@labn.net