idnits 2.17.00 (12 Aug 2021) /tmp/idnits36483/draft-deevi-idr-bgp-srte-yang-03.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 94 instances of too long lines in the document, the longest one being 102 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 214 has weird spacing: '...o color uin...' == Line 218 has weird spacing: '...d-point ine...' == The document seems to contain a disclaimer for pre-RFC5378 work, but was first submitted on or after 10 November 2008. The disclaimer is usually necessary only for documents that revise or obsolete older RFCs, and that take significant amounts of text from those RFCs. If you can contact all authors of the source material and they are willing to grant the BCP78 rights to the IETF Trust, you can and should remove the disclaimer. Otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (January 26, 2022) is 108 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) == Outdated reference: A later version (-13) exists of draft-ietf-idr-bgp-model-10 == Outdated reference: A later version (-17) exists of draft-ietf-idr-segment-routing-te-policy-11 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-policy-09 == Outdated reference: draft-ietf-spring-srv6-network-programming has been published as RFC 8986 Summary: 1 error (**), 0 flaws (~~), 7 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Inter-Domain Routing Working Group K. Deevi 2 Internet-Draft K. Raza 3 Intended status: Standards Track Cisco 4 Expires: July 26, 2022 K. Majumdar 5 Commscope 6 B. Decraene 7 Orange 8 Z. Jiang 9 Tencent 10 January 26, 2022 12 YANG data model for BGP Segment Routing TE Extensions 13 draft-deevi-idr-bgp-srte-yang-03 15 Abstract 17 This document defines a YANG data model that can be used to configure 18 and manage Segment Routing TE extensions in BGP. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on July 26, 2022. 37 Copyright Notice 39 Copyright (c) 2022 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (https://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 This document may contain material from IETF Documents or IETF 53 Contributions published or made publicly available before November 54 10, 2008. The person(s) controlling the copyright in some of this 55 material may not have granted the IETF Trust the right to allow 56 modifications of such material outside the IETF Standards Process. 57 Without obtaining an adequate license from the person(s) controlling 58 the copyright in such materials, this document may not be modified 59 outside the IETF Standards Process, and derivative works of it may 60 not be created outside the IETF Standards Process, except to format 61 it for publication as an RFC or to translate it into languages other 62 than English. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 67 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 68 2. BGP Segment Routing Traffic Engineering Yang model . . . . . 3 69 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 70 2.2. SR Policy . . . . . . . . . . . . . . . . . . . . . . . . 4 71 2.3. Automatic Steering . . . . . . . . . . . . . . . . . . . 4 72 3. Yang Tree . . . . . . . . . . . . . . . . . . . . . . . . . . 5 73 3.1. SR Policy . . . . . . . . . . . . . . . . . . . . . . . . 5 74 3.2. Automatic Steering . . . . . . . . . . . . . . . . . . . 8 75 4. Yang Module . . . . . . . . . . . . . . . . . . . . . . . . . 9 76 5. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 25 77 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 26 79 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 80 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 81 9.1. Normative References . . . . . . . . . . . . . . . . . . 26 82 9.2. Informative References . . . . . . . . . . . . . . . . . 27 83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 85 1. Introduction 87 YANG [RFC6020] is a data definition language that was introduced to 88 define the contents of a conceptual data store that allows networked 89 devices to be managed using NETCONF [RFC6241]. YANG is proving 90 relevant beyond its initial confines, as bindings to other interfaces 91 (e.g. ReST) [RFC8040] and encodings other than XML (e.g. JSON) 92 [RFC7951] are being defined. Furthermore, YANG data models can be 93 used as the basis of implementation for other interfaces, such as CLI 94 and programmatic APIs. 96 This document defines the YANG model for Segment Routing TE specific 97 extensions in BGP. 99 1.1. Requirements Language 101 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 102 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 103 "OPTIONAL" in this document are to be interpreted as described in BCP 104 14 [RFC2119] [RFC8174] when, and only when, they appear in all 105 capitals, as shown here. 107 2. BGP Segment Routing Traffic Engineering Yang model 109 2.1. Overview 111 Segment Routing (SR), as defined in [RFC8402], leverages the source 112 routing paradigm where a node steers a packet through an ordered list 113 of instructions, called segments. SR, thus, allows enforcing a flow 114 through any topological path and/or service chain while maintaining 115 per-flow state only at the ingress nodes to the SR domain. 117 When applied to ipv6 data-plane (i.e. SRv6), the ordered set of 118 instructions are realized via SRv6 SIDs. The various functions and 119 behaviors corresponding to network programming using SRv6 are 120 specified in [I-D.ietf-spring-srv6-network-programming]. 122 This document defines Yang model for the Segment Routing TE 123 extensions applicable for BGP as following: 125 o BGP signaled SR Policy as described in 126 [I-D.ietf-idr-segment-routing-te-policy]. 128 o Automatic Steering as described in 129 [I-D.ietf-spring-segment-routing-policy] and 130 [I-D.ietf-idr-segment-routing-te-policy]. 132 The Yang extensions proposed in this model augment the base BGP model 133 defined in [I-D.ietf-idr-bgp-model]. 135 Note: Base BGP model does not have a common structure for BGP RIB. 136 The placeholder containers defined in this model can be removed once 137 base BGP model has the BGP RIB structure. 139 The modeling in this document complies with the Network Management 140 Datastore Architecture (NMDA) [RFC8342]. The operational state data 141 is combined with the associated configuration data in the same 142 hierarchy [RFC8407]. When protocol states are retrieved from the 143 NMDA operational state datastore, the returned states cover all 144 "config true" (rw) and "config false" (ro) nodes defined in the 145 schema. 147 2.2. SR Policy 149 Architecture for SR Policies is described in 150 [I-D.ietf-spring-segment-routing-policy]. BGP Signaled SR Policies 151 are described in the [I-D.ietf-idr-segment-routing-te-policy]. 152 Following Yang extensions for SR Policy configuration and state data 153 are applicable: 155 o Addition of identies extending the BGP-AFI-SAFI base identity. 156 This is to add two new address families namely IPv4 SR-policy and 157 IPv6 SR-policy, as described in 158 [I-D.ietf-idr-segment-routing-te-policy]. 160 o BGP Signaled SR Policy candidate paths. These refer to the 161 explicit candidate paths signaled via BGP as SAFI NLRIs, state of 162 which is applicable in the context of BGP speaker process. This 163 is modeled by adding SR Policy address family specific container 164 under generic BGP afi-safi list entry defined in the base BGP 165 model [I-D.ietf-idr-bgp-model]. 167 o On Demand SR Policy candidate paths. These refer to the dynamic 168 candidate paths as described in 169 [I-D.ietf-spring-segment-routing-policy]. There are two parts to 170 this in the context of BGP. A set of authorized SR Policy colors 171 for on demand policy triggers, and the actual instantiated 172 candidate paths per BGP next-hop. New containers and lists are 173 added under BGP global mode to model this information. 175 o SR Policy state in the context of BGP speaker. This represents 176 the state SR Policies (regardless of method of instantiation per 177 candidate path). The SR Policy state is maintained in the context 178 of BGP speaker process to realize the Automatic Steering of 179 overlay routes. Automatic Steering extensions are described in 180 the next section. 182 Note: The common parameters and datatypes for the SR Policy, 183 currently defined in this model, should be imported from SR Policy 184 Manager model, once available. 186 2.3. Automatic Steering 188 Automatic Steering (AS) refers to the ability to forward traffic over 189 a SR Policy on the head-end, as described in 190 [I-D.ietf-spring-segment-routing-policy]. When a BGP route is 191 received with the color extended community and if the color value 192 matches the color of an authorized SR Policy installed on the head- 193 end, the route is programmed to resolve over SR Policy in forwarding. 194 Automatic Steering information associated with the BGP routes is 195 modeled as state information per route. 197 TBD: The configuration parameters for Automatic Steering are yet to 198 be added as an augmentation to the BGP route policy model. Such as, 199 extensions for opaque color extended community in BGP policy model, 200 and the Color Only (CO) flags controlling the Automatic Steering 201 behavior as described in [I-D.ietf-idr-segment-routing-te-policy]. 203 3. Yang Tree 205 3.1. SR Policy 207 On Demand Nexthop (ODN) policies triggered by BGP 209 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global: 210 +--rw segment-routing 211 +--rw on-demand-policies 212 | +--ro authorized-colors 213 | | +--ro colors* [color] 214 | | +--ro color uint32 215 | +--ro installed-policies 216 | +--ro sr-policy* [color end-point] 217 | +--ro color uint32 218 | +--ro end-point inet:ip-address 219 +--ro policy-state 220 +--ro sr-policy* [color end-point] 221 +--ro color uint32 222 +--ro end-point inet:ip-address 223 +--ro policy-state? enumeration 224 +--ro binding-sid? sid-type 225 +--ro steering-disabled? empty 226 +--ro ref-count? uint32 228 BGP Signaled Explicit SR Policies under ipv4 and ipv6 SR-Policy SAFI 230 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi: 231 +--rw ipv4-srpolicy 232 +--ro explicit-policies 233 +--ro sr-policy* [distinguisher color end-point] 234 +--ro distinguisher uint32 235 +--ro color uint32 236 +--ro end-point inet:ip-address 237 +--ro preference? uint32 238 +--ro explicit-binding-sid 239 | +--ro binding-sid? sid-type 240 | +--ro strict? boolean 241 | +--ro drop-on-invalid? boolean 242 +--ro usable? boolean 243 +--ro registered? boolean 244 +--ro segment-lists 245 +--ro segment-list* [weight] 246 +--ro weight uint32 247 +--ro segments 248 +--ro segment* [index] 249 +--ro index uint32 250 +--ro type? segment-type 251 +--ro segment-types 252 +--ro segment-type-1 253 | +--ro sid-value? rt-types:mpls-label 254 +--ro segment-type-2 255 | +--ro sid-value? srv6-types:srv6-sid 256 +--ro segment-type-3 257 | +--ro ipv4-address? inet:ipv4-address 258 | +--ro algorithm? uint8 259 +--ro segment-type-4 260 | +--ro ipv6-address? inet:ipv6-address 261 | +--ro algorithm? uint8 262 +--ro segment-type-5 263 | +--ro ipv4-address? inet:ipv4-address 264 | +--ro interface-identifier? uint32 265 +--ro segment-type-6 266 | +--ro local-ipv4-address? inet:ipv4-address 267 | +--ro remote-ipv4-address? inet:ipv4-address 268 +--ro segment-type-7 269 | +--ro local-ipv6-address? inet:ipv6-address 270 | +--ro local-interface-identifier? uint32 271 | +--ro remote-ipv6-address? inet:ipv6-address 272 | +--ro remote-interface-identifier? uint32 273 +--ro segment-type-8 274 | +--ro local-ipv6-address? inet:ipv6-address 275 | +--ro remote-ipv6-address? inet:ipv6-address 276 +--ro segment-type-9 277 | +--ro ipv6-address? inet:ipv6-address 278 | +--ro algorithm? uint8 279 +--ro segment-type-10 280 | +--ro local-ipv6-address? inet:ipv6-address 281 | +--ro local-interface-identifier? uint32 282 | +--ro remote-ipv6-address? inet:ipv6-address 283 | +--ro remote-interface-identifier? uint32 284 +--ro segment-type-11 285 +--ro local-ipv6-address? inet:ipv6-address 286 +--ro remote-ipv6-address? inet:ipv6-address 287 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi: 289 +--rw ipv6-srpolicy 290 +--ro explicit-policies 291 +--ro sr-policy* [distinguisher color end-point] 292 +--ro distinguisher uint32 293 +--ro color uint32 294 +--ro end-point inet:ip-address 295 +--ro preference? uint32 296 +--ro explicit-binding-sid 297 | +--ro binding-sid? sid-type 298 | +--ro strict? boolean 299 | +--ro drop-on-invalid? boolean 300 +--ro usable? boolean 301 +--ro registered? boolean 302 +--ro segment-lists 303 +--ro segment-list* [weight] 304 +--ro weight uint32 305 +--ro segments 306 +--ro segment* [index] 307 +--ro index uint32 308 +--ro type? segment-type 309 +--ro segment-types 310 +--ro segment-type-1 311 | +--ro sid-value? rt-types:mpls-label 312 +--ro segment-type-2 313 | +--ro sid-value? srv6-types:srv6-sid 314 +--ro segment-type-3 315 | +--ro ipv4-address? inet:ipv4-address 316 | +--ro algorithm? uint8 317 +--ro segment-type-4 318 | +--ro ipv6-address? inet:ipv6-address 319 | +--ro algorithm? uint8 320 +--ro segment-type-5 321 | +--ro ipv4-address? inet:ipv4-address 322 | +--ro interface-identifier? uint32 323 +--ro segment-type-6 324 | +--ro local-ipv4-address? inet:ipv4-address 325 | +--ro remote-ipv4-address? inet:ipv4-address 326 +--ro segment-type-7 327 | +--ro local-ipv6-address? inet:ipv6-address 328 | +--ro local-interface-identifier? uint32 329 | +--ro remote-ipv6-address? inet:ipv6-address 330 | +--ro remote-interface-identifier? uint32 331 +--ro segment-type-8 332 | +--ro local-ipv6-address? inet:ipv6-address 333 | +--ro remote-ipv6-address? inet:ipv6-address 334 +--ro segment-type-9 335 | +--ro ipv6-address? inet:ipv6-address 336 | +--ro algorithm? uint8 337 +--ro segment-type-10 338 | +--ro local-ipv6-address? inet:ipv6-address 339 | +--ro local-interface-identifier? uint32 340 | +--ro remote-ipv6-address? inet:ipv6-address 341 | +--ro remote-interface-identifier? uint32 342 +--ro segment-type-11 343 +--ro local-ipv6-address? inet:ipv6-address 344 +--ro remote-ipv6-address? inet:ipv6-address 346 3.2. Automatic Steering 348 Yang Tree for Automatic Steering with example of ipv4-unicast SAFI 350 module: ietf-bgp-srte 351 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-unicast: 352 +--ro routes 353 +--ro route* [prefix neighbor add-path-id] 354 +--ro prefix union 355 +--ro neighbor inet:ip-address 356 +--ro add-path-id uint32 357 +--ro automatic-steering 358 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 359 +--ro end-point? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/end-point 360 +--ro co-flag? enumeration 361 +--ro binding-sid? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/binding-sid 362 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv6-unicast: 363 +--ro routes 364 +--ro route* [prefix neighbor add-path-id] 365 +--ro prefix union 366 +--ro neighbor inet:ip-address 367 +--ro add-path-id uint32 368 +--ro automatic-steering 369 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 370 +--ro end-point? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/end-point 371 +--ro co-flag? enumeration 372 +--ro binding-sid? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/binding-sid 373 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-labeled-unicast: 374 +--ro routes 375 +--ro route* [prefix neighbor add-path-id] 376 +--ro prefix union 377 +--ro neighbor inet:ip-address 378 +--ro add-path-id uint32 379 +--ro automatic-steering 380 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 381 +--ro end-point? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/end-point 382 +--ro co-flag? enumeration 383 +--ro binding-sid? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/binding-sid 385 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv6-labeled-unicast: 386 +--ro routes 387 +--ro route* [prefix neighbor add-path-id] 388 +--ro prefix union 389 +--ro neighbor inet:ip-address 390 +--ro add-path-id uint32 391 +--ro automatic-steering 392 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 393 +--ro end-point? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/end-point 394 +--ro co-flag? enumeration 395 +--ro binding-sid? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/binding-sid 396 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:l3vpn-ipv4-unicast: 397 +--ro routes 398 +--ro route* [rd prefix neighbor add-path-id] 399 +--ro rd rt-types:route-distinguisher 400 +--ro prefix union 401 +--ro neighbor inet:ip-address 402 +--ro add-path-id uint32 403 +--ro automatic-steering 404 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 405 +--ro end-point? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/end-point 406 +--ro co-flag? enumeration 407 +--ro binding-sid? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/binding-sid 408 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:l3vpn-ipv6-unicast: 409 +--ro routes 410 +--ro route* [rd prefix neighbor add-path-id] 411 +--ro rd rt-types:route-distinguisher 412 +--ro prefix union 413 +--ro neighbor inet:ip-address 414 +--ro add-path-id uint32 415 +--ro automatic-steering 416 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 417 +--ro end-point? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/end-point 418 +--ro co-flag? enumeration 419 +--ro binding-sid? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/binding-sid 421 ... 423 4. Yang Module 425 file "ietf-bgp-srte@2019-07-07.yang" 427 module ietf-bgp-srte { 429 namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-srte"; 430 prefix "ietf-bgp-srte"; 432 import ietf-routing-types { 433 prefix rt-types; 434 } 436 import ietf-routing { 437 prefix "rt"; 438 } 440 import ietf-inet-types { 441 prefix inet; 442 } 444 import ietf-bgp { 445 prefix bgp; 446 } 448 import ietf-bgp-types { 449 prefix bgp-types; 450 } 452 import ietf-srv6-types { 453 prefix srv6-types; 454 } 456 organization 457 "IETF Inter-Domain Routing Working Group"; 459 contact 460 "Inter-Domain working group - idr@ietf.org"; 462 description 463 "This YANG module defines a data model to configure and 464 manage segment routing extensions in BGP. 466 Terms and Acronyms 468 AF : Address Family 470 BGP (bgp) : Border Gateway Protocol 472 SR : Segment Routing 474 SID : Segment Identifier 476 SRv6 : Segment Routing with IPv6 Data plane 477 VPN : Virtual Private Network 479 VRF : Virtual Routing and Forwarding 481 "; 483 revision 2018-06-26 { 484 description 485 "Initial revision" ; 486 reference ""; 487 } 489 // 490 // New identities and typedefs for SR extensions 491 // 493 // SR Policy SAFI identities 494 identity IPV4_SRPOLICY { 495 base bgp-types:afi-safi-type; 496 description 497 "IPv4 SR Policy (AFI,SAFI = 1,73)"; 498 reference "TBD"; 499 } 501 identity IPV6_SRPOLICY { 502 base bgp-types:afi-safi-type; 503 description 504 "IPv6 SR Policy (AFI,SAFI = 2,73)"; 505 reference "TBD"; 506 } 508 typedef segment-type { 509 type enumeration { 510 enum segment-type-1 { 511 value 1; 512 description "SR-MPLS Label"; 513 } 514 enum segment-type-2 { 515 value 2; 516 description "SRv6 SID"; 517 } 518 enum segment-type-3 { 519 value 3; 520 description "IPv4 Prefix with optional SR Algorithm"; 521 } 522 enum segment-type-4 { 523 value 4; 524 description "IPv6 Global Prefix with optional SR Algorithm for SR-MPLS"; 526 } 527 enum segment-type-5 { 528 value 5; 529 description "IPv4 Prefix with Local Interface ID"; 530 } 531 enum segment-type-6 { 532 value 6; 533 description "IPv4 Addresses for link endpoints as Local, Remote pair"; 534 } 535 enum segment-type-7 { 536 value 7; 537 description "IPv6 Prefix and Interface ID for link endpoints as Local, 538 Remote pair for SR-MPLS"; 539 } 540 enum segment-type-8 { 541 value 8; 542 description "IPv6 Addresses for link endpoints as Local, Remote pair for 543 SR-MPLS"; 544 } 545 enum segment-type-9 { 546 value 9; 547 description "IPv6 Global Prefix with optional SR Algorithm for SRv6"; 548 } 549 enum segment-type-10 { 550 value 10; 551 description "IPv6 Prefix and Interface ID for link endpoints as Local, 552 Remote pair for SRv6"; 553 } 554 enum segment-type-11 { 555 value 11; 556 description "IPv6 Addresses for link endpoints as Local, Remote pair for 557 SRv6"; 558 } 559 } 560 description "SR segment type"; 561 } 563 // Sid type union 564 typedef sid-type { 565 type union { 566 type rt-types:mpls-label; 567 type srv6-types:srv6-sid; 568 } 569 description "Type definition for Segment Identifier. This is 570 a union type which can be either a SR MPLS SID in the 571 form of a label, or a SRv6 SID in the form of 572 an IPv6 address."; 573 reference "TBD"; 575 } 577 // 578 // SR Policy Related Groupings 579 // 580 //Color and Endpoint of the SR Policy 581 grouping sr-policy-color-endpoint { 582 description "Common grouping for SR Policy Color and 583 Endpoint"; 584 leaf color { 585 type uint32; 586 description "Color of the policy"; 587 } 589 leaf end-point { 590 type inet:ip-address; 591 description "Endpoint of the policy"; 592 } 593 } 594 // Authorized colors for On Demand SR Policy programming 595 grouping sr-odn-auth-colors { 596 description 597 "Authorized colors for On Demand (dynamic) SR Policies 598 towards BGP nexthops"; 599 container authorized-colors { 600 config false; 601 description 602 "Authorized colors for On Demand (dynamic) SR policies 603 towards BGP nexthops"; 604 list colors { 605 key "color"; 606 description "List of SR Policy Colors"; 607 leaf color { 608 type uint32; 609 description "Color value"; 610 } 611 } 612 } 613 } 615 grouping sr-policy-cmn-state { 616 description "Common state parameters applicable to 617 SR Policies"; 618 leaf policy-state { 619 type enumeration { 620 enum UP { 621 description "SR Policy state UP"; 622 } 623 enum DOWN { 624 description "SR Policy state DOWN"; 625 } 626 } 627 description "SR Policy forwarding state"; 628 } 630 leaf binding-sid { 631 type sid-type; 632 description "Binding SID of the SR Policy"; 633 } 635 leaf steering-disabled { 636 type empty; 637 description "This attribute is set if steering 638 is disabled on this SR policy"; 639 } 641 leaf ref-count { 642 type uint32; 643 description "Count of routes steering over this policy"; 644 } 645 } 647 // 648 // SR Policy State grouping 649 // 650 grouping sr-policy-state { 651 description "SR Policy State"; 652 container policy-state { 653 config false; 654 description "SR Policy State"; 655 list sr-policy { 656 key "color end-point"; 657 description "List of SR Policies"; 659 uses sr-policy-color-endpoint; 661 // State of the SR Policy in BGP 662 uses sr-policy-cmn-state; 663 } 664 } 665 } 667 grouping sr-exp-policy-cp-state { 668 description "State of BGP signaled SR Policy (explicit) 669 candidate paths"; 670 container explicit-policies { 671 config false; 672 description "BGP signaled explicit SR Policies"; 673 list sr-policy { 674 key "distinguisher color end-point"; 675 description "List of BGP signaled explicit SR Policies"; 676 leaf distinguisher { 677 type uint32; 678 description "Distinguisher of the SR Policy 679 candidate path"; 680 } 682 uses sr-policy-color-endpoint; 684 leaf preference { 685 type uint32; 686 description "Preference of the SR Policy candidate path"; 687 } 689 container explicit-binding-sid { 690 description "Explicitly supplied Binding SID 691 for this policy"; 692 leaf binding-sid { 693 type sid-type; 694 description "Binding SID value"; 695 } 696 leaf strict { 697 type boolean; 698 description "Boolean indicating that the node 699 must use only the supplied Binding SID 700 for this SR Policy. 701 reference: TBD"; 702 } 703 leaf drop-on-invalid { 704 type boolean; 705 description "Boolean to indicate drop upon invalid 706 policy, behavior. This overwrites the 707 default behavior of fallback to IGP path 708 , when SR Policy is (or becomes) invalid. 709 reference: TBD"; 710 } 711 } 713 leaf usable { 714 type boolean; 715 description "Boolean to indicate that the SR Policy is 716 usable on this node. 717 reference: TBD"; 718 } 719 leaf registered { 720 type boolean; 721 description "Boolean to indicate that the SR policy 722 is registered with policy manager to 723 install the corresponding forwarding entry"; 725 } 727 uses segment-lists; 728 // TODO: Segment Lists and other parameters from SR Policy model 729 // to be imported here. 730 } 731 } 732 } 734 grouping segment-lists { 735 description 736 "Segment lists grouping"; 737 container segment-lists { 738 description "Segment-lists properties"; 740 list segment-list { 741 key "weight"; 742 description "Segment-list"; 743 leaf weight { 744 type uint32; 745 description "Segment-list weight"; 746 } 747 container segments { 748 description 749 "Segments for given segment list"; 751 list segment { 752 key "index"; 753 description "Segment/hop at the index"; 754 uses segment-properties; 755 } 756 } 757 } 758 } 759 } 761 grouping segment-properties { 762 description "Segment properties grouping"; 763 leaf index { 764 type uint32; 765 description "Segment index"; 766 } 767 leaf type { 768 type segment-type; 769 description "Segment type"; 770 } 771 container segment-types { 772 description "Types of segments"; 773 container segment-type-1 { 774 description 775 "Segment declared by MPLS label"; 776 leaf sid-value { 777 type rt-types:mpls-label; 778 description "MPLS label value"; 779 } 780 } 781 container segment-type-2 { 782 description 783 "Segment declared by SRv6 SID value"; 784 leaf sid-value { 785 type srv6-types:srv6-sid; 786 description "SRv6 SID value"; 787 } 788 } 789 container segment-type-3 { 790 description 791 "Segment declared by IPv4 Prefix with optional SR Algorithm"; 792 leaf ipv4-address { 793 type inet:ipv4-address; 794 description "Segment IPv4 address"; 795 } 796 leaf algorithm { 797 type uint8; 798 description "Prefix SID algorithm identifier"; 799 } 800 } 801 container segment-type-4 { 802 description 803 "Segment declared by IPv6 Global Prefix with optional 804 SR Algorithm for SR-MPLS"; 805 leaf ipv6-address { 806 type inet:ipv6-address; 807 description "Segment IPv6 address"; 808 } 809 leaf algorithm { 810 type uint8; 811 description "Prefix SID algorithm identifier"; 812 } 813 } 814 container segment-type-5 { 815 description 816 "Segment declared by IPv4 Prefix with Local Interface ID"; 817 leaf ipv4-address { 818 type inet:ipv4-address; 819 description "Node IPv4 address"; 820 } 821 leaf interface-identifier { 822 type uint32; 823 description "local interface identifier"; 824 } 825 } 826 container segment-type-6 { 827 description 828 "Segment declared by IPv4 Addresses for link endpoints 829 as Local, Remote pair"; 830 leaf local-ipv4-address { 831 type inet:ipv4-address; 832 description "Segment local IPv4 adjacency address"; 833 } 834 leaf remote-ipv4-address { 835 type inet:ipv4-address; 836 description "Segment remote IPv4 adjacency address"; 837 } 838 } 839 container segment-type-7 { 840 description 841 "Segment declared by IPv6 Prefix and Interface ID for 842 link endpoints as Local, Remote pair for SR-MPLS"; 843 leaf local-ipv6-address { 844 type inet:ipv6-address; 845 description "Local link IPv6 address"; 846 } 847 leaf local-interface-identifier { 848 type uint32; 849 description "Local interface identifier"; 850 } 851 leaf remote-ipv6-address { 852 type inet:ipv6-address; 853 description "Remote link IPv6 address"; 854 } 855 leaf remote-interface-identifier { 856 type uint32; 857 description "Remote interface identifier"; 858 } 859 } 860 container segment-type-8 { 861 description 862 "Segment declared by IPv6 Addresses for link endpoints as 863 Local, Remote pair for SR-MPLS"; 864 leaf local-ipv6-address { 865 type inet:ipv6-address; 866 description "Segment local IPv6 adjacency address"; 867 } 868 leaf remote-ipv6-address { 869 type inet:ipv6-address; 870 description "Segment remote IPv6 adjacency address"; 871 } 872 } 873 container segment-type-9 { 874 description 875 "Segment declared by IPv6 Global Prefix with optional 876 SR Algorithm for SRv6"; 877 leaf ipv6-address { 878 type inet:ipv6-address; 879 description "Segment IPv6 prefix"; 880 } 881 leaf algorithm { 882 type uint8; 883 description "Prefix SID algorithm identifier"; 884 } 885 } 886 container segment-type-10 { 887 description 888 "Segment declared by IPv6 Prefix and Interface ID for 889 link endpoints as Local, Remote pair for SRv6"; 890 leaf local-ipv6-address { 891 type inet:ipv6-address; 892 description "Local link IPv6 address"; 893 } 894 leaf local-interface-identifier { 895 type uint32; 896 description "Local interface identifier"; 897 } 898 leaf remote-ipv6-address { 899 type inet:ipv6-address; 900 description "Remote link IPv6 address"; 901 } 902 leaf remote-interface-identifier { 903 type uint32; 904 description "Remote interface identifier"; 905 } 906 } 907 container segment-type-11 { 908 description 909 "Segment declared by IPv6 Addresses for link endpoints as 910 Local, Remote pair for SRv6"; 912 leaf local-ipv6-address { 913 type inet:ipv6-address; 914 description "Segment local IPv6 adjacency address"; 915 } 916 leaf remote-ipv6-address { 917 type inet:ipv6-address; 918 description "Segment remote IPv6 adjacency address"; 919 } 920 } 921 } 922 } 923 grouping sr-odn-policies { 924 description "SR On Demand (dynamic) SR Policies"; 925 container installed-policies { 926 config false; 927 description "BGP triggered On Demand (dynamic) SR Policies 928 corresponding to the BGP nexthops"; 929 list sr-policy { 930 key "color end-point"; 931 description "SR Policy list"; 932 uses sr-policy-color-endpoint; 933 } 934 } 935 } 937 grouping sr-policy-steering-state { 938 description "Per route Automatic Steering parameters"; 939 container automatic-steering { 940 description "Per route Automatic Steering parameters"; 941 leaf color { 942 type leafref { 943 path "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 944 "bgp:bgp/bgp:global/ietf-bgp-srte:segment-routing/" + 945 "ietf-bgp-srte:policy-state/ietf-bgp-srte:sr-policy/" + 946 "ietf-bgp-srte:color"; 947 } 948 description "Color of the SR Policy being used for 949 Automatic Steering"; 950 } 951 leaf end-point { 952 type leafref { 953 path "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 954 "bgp:bgp/bgp:global/ietf-bgp-srte:segment-routing/" + 955 "ietf-bgp-srte:policy-state/ietf-bgp-srte:sr-policy/" + 956 "ietf-bgp-srte:end-point"; 957 } 958 description "End-point of the SR Policy being used 959 for Automatic Steering"; 961 } 962 leaf co-flag { 963 type enumeration { 964 enum 00 { 965 description "Color-Only flag 00"; 966 } 967 enum 01 { 968 description "Color-Only flag 01"; 969 } 970 enum 10 { 971 description "Color-Only flag 10"; 972 } 973 } 974 default "00"; 975 description "Color-Only (CO) flags applicable for 976 Automatic Steering of this route"; 977 } 978 leaf binding-sid { 979 type leafref { 980 path "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 981 "bgp:bgp/bgp:global/ietf-bgp-srte:segment-routing/" + 982 "ietf-bgp-srte:policy-state/ietf-bgp-srte:sr-policy/" + 983 "ietf-bgp-srte:binding-sid"; 984 } 985 description "Binding SID of the SR Policy"; 986 } 987 } 988 } 990 grouping route-key-leafs { 991 description "Grouping for key leafs identifying a route"; 992 leaf prefix { 993 type union { 994 type inet:ip-prefix; 995 type string; 996 } 997 description "BGP Prefix. This is a temp definition to 998 cover ip-prefix and other NLRI formats. 999 Import the type once defined in base 1000 BGP RIB model"; 1001 } 1002 leaf neighbor { 1003 type inet:ip-address; 1004 description "BGP Neighbor"; 1005 } 1006 leaf add-path-id { 1007 type uint32; 1008 description "Add-path ID"; 1010 } 1011 } 1013 grouping common-bgp-route-grouping { 1014 description "BGP route list" ; 1015 container routes { 1016 config false; 1017 description "BGP Route in local RIB"; 1018 list route { 1019 key "prefix neighbor add-path-id"; 1020 description "BGP route list"; 1021 uses route-key-leafs; 1022 } 1023 } 1024 } 1026 grouping common-bgp-vpn-route-grouping { 1027 description "BGP route list" ; 1028 container routes { 1029 config false; 1030 description "BGP VPN Route in local RIB"; 1031 list route { 1032 key "rd prefix neighbor add-path-id"; 1033 description "Route List"; 1035 leaf rd { 1036 type rt-types:route-distinguisher; 1037 description "Route Distinguisher"; 1038 } 1039 uses route-key-leafs; 1040 } 1041 } 1042 } 1044 // 1045 // BGP Specific Paramters 1046 // 1047 // Augment AF with route list 1048 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1049 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-unicast" { 1050 description 1051 "Augment BGP SAFI route"; 1052 uses common-bgp-route-grouping; 1053 } 1054 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1055 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv6-unicast" { 1056 description 1057 "Augment BGP SAFI route"; 1059 uses common-bgp-route-grouping; 1060 } 1061 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1062 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-labeled-unicast" { 1063 description 1064 "Augment BGP SAFI route"; 1065 uses common-bgp-route-grouping; 1067 } 1068 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1069 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv6-labeled-unicast" { 1070 description 1071 "Augment BGP SAFI route"; 1072 uses common-bgp-route-grouping; 1073 } 1074 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1075 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:l3vpn-ipv4-unicast" { 1076 description 1077 "Augment BGP SAFI route"; 1078 uses common-bgp-vpn-route-grouping; 1079 } 1080 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1081 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:l3vpn-ipv6-unicast" { 1082 description 1083 "Augment BGP SAFI route"; 1084 uses common-bgp-vpn-route-grouping; 1085 } 1087 // SR Policy Related 1088 // On Demand authorized colors table 1089 // SR Policy state data 1090 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1091 "bgp:bgp/bgp:global" { 1092 description 1093 "Segment Routing parameters in BGP global model"; 1094 container segment-routing { 1095 description "Segment Routing parameters"; 1096 container on-demand-policies { 1097 description 1098 "Segment Routing On Demand Nexthop 1099 (ODN) SR Policies"; 1100 uses sr-odn-auth-colors; 1101 uses sr-odn-policies; 1102 } 1103 uses sr-policy-state; 1104 } 1105 } 1106 // Steering state in overlay BGP routes 1107 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1108 "bgp:bgp/bgp:global/bgp:afi-safis/" + 1109 "bgp:afi-safi/bgp:ipv4-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 1110 description 1111 "Augment BGP SAFI route with steering info"; 1112 uses sr-policy-steering-state; 1113 } 1114 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1115 "bgp:bgp/bgp:global/bgp:afi-safis/" + 1116 "bgp:afi-safi/bgp:ipv6-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 1117 description 1118 "Augment BGP SAFI route with steering info"; 1119 uses sr-policy-steering-state; 1120 } 1121 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1122 "bgp:bgp/bgp:global/bgp:afi-safis/" + 1123 "bgp:afi-safi/bgp:ipv4-labeled-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 1124 description 1125 "Augment BGP SAFI route with steering info"; 1126 uses sr-policy-steering-state; 1127 } 1128 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1129 "bgp:bgp/bgp:global/bgp:afi-safis/" + 1130 "bgp:afi-safi/bgp:ipv6-labeled-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 1131 description 1132 "Augment BGP SAFI route with steering info"; 1133 uses sr-policy-steering-state; 1134 } 1135 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1136 "bgp:bgp/bgp:global/bgp:afi-safis/" + 1137 "bgp:afi-safi/bgp:l3vpn-ipv4-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 1138 description 1139 "Augment BGP SAFI route with steering info"; 1140 uses sr-policy-steering-state; 1141 } 1142 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1143 "bgp:bgp/bgp:global/bgp:afi-safis/" + 1144 "bgp:afi-safi/bgp:l3vpn-ipv6-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 1145 description 1146 "Augment BGP SAFI route with steering info"; 1147 uses sr-policy-steering-state; 1148 } 1150 // BGP Signaled SR Policy explicit candidate paths state 1151 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1152 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi" { 1153 description "Augment IPv4 SR Policy SAFI list entry"; 1154 container ipv4-srpolicy { 1155 when "../afi-safi-name = 'bgp-types:IPV4_SRPOLICY'" { 1156 description 1157 "Include this container for IPv4 SR Policy specific 1158 configuration"; 1159 } 1160 description "IPv4 SR Policy specific parameters"; 1161 uses sr-exp-policy-cp-state; 1162 } 1163 } 1165 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 1166 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi" { 1167 description "Augment IPv6 SR Policy SAFI list entry"; 1168 container ipv6-srpolicy { 1169 when "../afi-safi-name = 'bgp-types:IPV6_SRPOLICY'" { 1170 description 1171 "Include this container for IPv6 SR Policy specific 1172 configuration"; 1173 } 1174 description "IPv6 SR Policy specific parameters"; 1175 uses sr-exp-policy-cp-state; 1176 } 1177 } 1178 } 1179 1181 5. Contributors 1183 Dhanendra Jain 1184 Cisco Systems 1185 US 1187 Email: dhanendra.ietf@gmail.com 1189 Zhichun Jiang 1190 Cisco Systems 1191 US 1193 Email: zcjiang@tencent.com 1195 Zafar Ali 1196 Cisco Systems 1197 US 1199 Email: zali@cisco.com 1200 Sharmila Palani 1201 Cisco Systems 1202 US 1204 Email: spalani@cisco.com 1206 6. IANA Considerations 1208 7. Security Considerations 1210 The transport protocol used for sending the BGP Segment Routing data 1211 MUST support authentication and SHOULD support encryption. The data- 1212 model by itself does not create any security implications. 1214 This draft does not change any underlying security issues inherent in 1215 [I-D.ietf-idr-bgp-model]. 1217 8. Acknowledgements 1219 TBD. 1221 9. References 1223 9.1. Normative References 1225 [I-D.ietf-idr-bgp-model] 1226 Jethanandani, M., Patel, K., Hares, S., and J. Haas, "BGP 1227 YANG Model for Service Provider Networks", draft-ietf-idr- 1228 bgp-model-10 (work in progress), November 2020. 1230 [I-D.ietf-idr-segment-routing-te-policy] 1231 Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., 1232 Rosen, E., Jain, D., and S. Lin, "Advertising Segment 1233 Routing Policies in BGP", draft-ietf-idr-segment-routing- 1234 te-policy-11 (work in progress), November 2020. 1236 [I-D.ietf-spring-segment-routing-policy] 1237 Filsfils, C., Talaulikar, K., Voyer, D., Bogdanov, A., and 1238 P. Mattes, "Segment Routing Policy Architecture", draft- 1239 ietf-spring-segment-routing-policy-09 (work in progress), 1240 November 2020. 1242 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1243 Requirement Levels", BCP 14, RFC 2119, 1244 DOI 10.17487/RFC2119, March 1997, 1245 . 1247 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1248 the Network Configuration Protocol (NETCONF)", RFC 6020, 1249 DOI 10.17487/RFC6020, October 2010, 1250 . 1252 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1253 and A. Bierman, Ed., "Network Configuration Protocol 1254 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1255 . 1257 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1258 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1259 May 2017, . 1261 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1262 and R. Wilton, "Network Management Datastore Architecture 1263 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1264 . 1266 9.2. Informative References 1268 [I-D.ietf-spring-srv6-network-programming] 1269 Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., 1270 Matsushima, S., and Z. Li, "SRv6 Network Programming", 1271 draft-ietf-spring-srv6-network-programming-28 (work in 1272 progress), December 2020. 1274 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 1275 RFC 7951, DOI 10.17487/RFC7951, August 2016, 1276 . 1278 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1279 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1280 . 1282 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 1283 Decraene, B., Litkowski, S., and R. Shakir, "Segment 1284 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 1285 July 2018, . 1287 [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of 1288 Documents Containing YANG Data Models", BCP 216, RFC 8407, 1289 DOI 10.17487/RFC8407, October 2018, 1290 . 1292 Authors' Addresses 1294 Krishna Deevi 1295 Cisco 1296 170 W. Tasman Drive 1297 San Jose, CA 95134 1298 USA 1300 Email: kdeevi@cisco.com 1302 Kamran Raza 1303 Cisco 1304 2000 Innovation Drive 1305 Kanata, ON K2K-3E8 1306 CA 1308 Email: skraza@cisco.com 1310 Kausik Majumdar 1311 Commscope 1313 Email: kausik.majumdar@comscope.com 1315 Bruno Decraene 1316 Orange 1317 France 1319 Email: bruno.decraene@orange.com 1321 Zhichun Jiang 1322 Tencent 1324 Email: zcjiang@tencent.com