idnits 2.17.1 draft-majumdar-idr-bgp-srte-yang-00.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 57 instances of too long lines in the document, the longest one being 102 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 213 has weird spacing: '...o color uin...' == Line 217 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 (July 07, 2019) is 1755 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 (-17) exists of draft-ietf-idr-bgp-model-06 == Outdated reference: A later version (-26) exists of draft-ietf-idr-segment-routing-te-policy-07 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-policy-03 == Outdated reference: A later version (-28) exists of draft-ietf-spring-srv6-network-programming-01 Summary: 1 error (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Inter-Domain Routing Working Group K. Majumdar 3 Internet-Draft K. Raza 4 Intended status: Standards Track Cisco 5 Expires: January 8, 2020 B. Decraene 6 Orange 7 Z. Jiang 8 Tencent 9 July 07, 2019 11 YANG data model for BGP Segment Routing TE Extensions 12 draft-majumdar-idr-bgp-srte-yang-00 14 Abstract 16 This document defines a YANG data model that can be used to configure 17 and manage Segment Routing TE extensions in BGP. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at https://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on January 8, 2020. 36 Copyright Notice 38 Copyright (c) 2019 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (https://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 This document may contain material from IETF Documents or IETF 52 Contributions published or made publicly available before November 53 10, 2008. The person(s) controlling the copyright in some of this 54 material may not have granted the IETF Trust the right to allow 55 modifications of such material outside the IETF Standards Process. 56 Without obtaining an adequate license from the person(s) controlling 57 the copyright in such materials, this document may not be modified 58 outside the IETF Standards Process, and derivative works of it may 59 not be created outside the IETF Standards Process, except to format 60 it for publication as an RFC or to translate it into languages other 61 than English. 63 Table of Contents 65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 66 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 67 2. BGP Segment Routing Traffic Engineering Yang model . . . . . 3 68 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 69 2.2. SR Policy . . . . . . . . . . . . . . . . . . . . . . . . 4 70 2.3. Automatic Steering . . . . . . . . . . . . . . . . . . . 4 71 3. Yang Tree . . . . . . . . . . . . . . . . . . . . . . . . . . 5 72 3.1. SR Policy . . . . . . . . . . . . . . . . . . . . . . . . 5 73 3.2. Automatic Steering . . . . . . . . . . . . . . . . . . . 6 74 4. Yang Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 75 5. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 19 76 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 77 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 78 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 79 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 80 9.1. Normative References . . . . . . . . . . . . . . . . . . 19 81 9.2. Informative References . . . . . . . . . . . . . . . . . 20 82 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 84 1. Introduction 86 YANG [RFC6020] is a data definition language that was introduced to 87 define the contents of a conceptual data store that allows networked 88 devices to be managed using NETCONF [RFC6241]. YANG is proving 89 relevant beyond its initial confines, as bindings to other interfaces 90 (e.g. ReST) [RFC8040] and encodings other than XML (e.g. JSON) 91 [RFC7951] are being defined. Furthermore, YANG data models can be 92 used as the basis of implementation for other interfaces, such as CLI 93 and programmatic APIs. 95 This document defines the YANG model for Segment Routing TE specific 96 extensions in BGP. 98 1.1. Requirements Language 100 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 101 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 102 "OPTIONAL" in this document are to be interpreted as described in BCP 103 14 [RFC2119] [RFC8174] when, and only when, they appear in all 104 capitals, as shown here. 106 2. BGP Segment Routing Traffic Engineering Yang model 108 2.1. Overview 110 Segment Routing (SR), as defined in [RFC8402], leverages the source 111 routing paradigm where a node steers a packet through an ordered list 112 of instructions, called segments. SR, thus, allows enforcing a flow 113 through any topological path and/or service chain while maintaining 114 per-flow state only at the ingress nodes to the SR domain. 116 When applied to ipv6 data-plane (i.e. SRv6), the ordered set of 117 instructions are realized via SRv6 SIDs. The various functions and 118 behaviors corresponding to network programming using SRv6 are 119 specified in [I-D.ietf-spring-srv6-network-programming]. 121 This document defines Yang model for the Segment Routing TE 122 extensions applicable for BGP as following: 124 o BGP signaled SR Policy as described in 125 [I-D.ietf-idr-segment-routing-te-policy]. 127 o Automatic Steering as described in 128 [I-D.ietf-spring-segment-routing-policy] and 129 [I-D.ietf-idr-segment-routing-te-policy]. 131 The Yang extensions proposed in this model augment the base BGP model 132 defined in [I-D.ietf-idr-bgp-model]. 134 Note: Base BGP model does not have a common structure for BGP RIB. 135 The placeholder containers defined in this model can be removed once 136 base BGP model has the BGP RIB structure. 138 The modeling in this document complies with the Network Management 139 Datastore Architecture (NMDA) [RFC8342]. The operational state data 140 is combined with the associated configuration data in the same 141 hierarchy [RFC8407]. When protocol states are retrieved from the 142 NMDA operational state datastore, the returned states cover all 143 "config true" (rw) and "config false" (ro) nodes defined in the 144 schema. 146 2.2. SR Policy 148 Architecture for SR Policies is described in 149 [I-D.ietf-spring-segment-routing-policy]. BGP Signaled SR Policies 150 are described in the [I-D.ietf-idr-segment-routing-te-policy]. 151 Following Yang extensions for SR Policy configuration and state data 152 are applicable: 154 o Addition of identies extending the BGP-AFI-SAFI base identity. 155 This is to add two new address families namely IPv4 SR-policy and 156 IPv6 SR-policy, as described in 157 [I-D.ietf-idr-segment-routing-te-policy]. 159 o BGP Signaled SR Policy candidate paths. These refer to the 160 explicit candidate paths signaled via BGP as SAFI NLRIs, state of 161 which is applicable in the context of BGP speaker process. This 162 is modeled by adding SR Policy address family specific container 163 under generic BGP afi-safi list entry defined in the base BGP 164 model [I-D.ietf-idr-bgp-model]. 166 o On Demand SR Policy candidate paths. These refer to the dynamic 167 candidate paths as described in 168 [I-D.ietf-spring-segment-routing-policy]. There are two parts to 169 this in the context of BGP. A set of authorized SR Policy colors 170 for on demand policy triggers, and the actual instantiated 171 candidate paths per BGP next-hop. New containers and lists are 172 added under BGP global mode to model this information. 174 o SR Policy state in the context of BGP speaker. This represents 175 the state SR Policies (regardless of method of instantiation per 176 candidate path). The SR Policy state is maintained in the context 177 of BGP speaker process to realize the Automatic Steering of 178 overlay routes. Automatic Steering extensions are described in 179 the next section. 181 Note: The common parameters and datatypes for the SR Policy, 182 currently defined in this model, should be imported from SR Policy 183 Manager model, once available. 185 2.3. Automatic Steering 187 Automatic Steering (AS) refers to the ability to forward traffic over 188 a SR Policy on the head-end, as described in 189 [I-D.ietf-spring-segment-routing-policy]. When a BGP route is 190 received with the color extended community and if the color value 191 matches the color of an authorized SR Policy installed on the head- 192 end, the route is programmed to resolve over SR Policy in forwarding. 193 Automatic Steering information associated with the BGP routes is 194 modeled as state information per route. 196 TBD: The configuration parameters for Automatic Steering are yet to 197 be added as an augmentation to the BGP route policy model. Such as, 198 extensions for opaque color extended community in BGP policy model, 199 and the Color Only (CO) flags controlling the Automatic Steering 200 behavior as described in [I-D.ietf-idr-segment-routing-te-policy]. 202 3. Yang Tree 204 3.1. SR Policy 206 On Demand Nexthop (ODN) policies triggered by BGP 208 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global: 209 +--rw segment-routing 210 +--rw on-demand-policies 211 | +--ro authorized-colors 212 | | +--ro colors* [color] 213 | | +--ro color uint32 214 | +--ro installed-policies 215 | +--ro sr-policy* [color end-point] 216 | +--ro color uint32 217 | +--ro end-point inet:ip-address 218 +--ro policy-state 219 +--ro sr-policy* [color end-point] 220 +--ro color uint32 221 +--ro end-point inet:ip-address 222 +--ro policy-state? enumeration 223 +--ro binding-sid? sid-type 224 +--ro steering-disabled? empty 225 +--ro ref-count? uint32 227 BGP Signaled Explicit SR Policies under ipv4 and ipv6 SR-Policy SAFI 229 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi: 230 +--rw ipv4-srpolicy 231 +--ro explicit-policies 232 +--ro sr-policy* [distinguisher color end-point] 233 +--ro distinguisher uint32 234 +--ro color uint32 235 +--ro end-point inet:ip-address 236 +--ro preference? uint32 237 +--ro explicit-binding-sid 238 | +--ro binding-sid? sid-type 239 | +--ro strict? boolean 240 | +--ro drop-on-invalid? boolean 241 +--ro usable? boolean 242 +--ro registered? boolean 243 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi: 244 +--rw ipv6-srpolicy 245 +--ro explicit-policies 246 +--ro sr-policy* [distinguisher color end-point] 247 +--ro distinguisher uint32 248 +--ro color uint32 249 +--ro end-point inet:ip-address 250 +--ro preference? uint32 251 +--ro explicit-binding-sid 252 | +--ro binding-sid? sid-type 253 | +--ro strict? boolean 254 | +--ro drop-on-invalid? boolean 255 +--ro usable? boolean 256 +--ro registered? boolean 258 3.2. Automatic Steering 260 Yang Tree for Automatic Steering with example of ipv4-unicast SAFI 262 module: ietf-bgp-srte 263 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-unicast: 264 +--ro routes 265 +--ro route* [prefix neighbor add-path-id] 266 +--ro prefix union 267 +--ro neighbor inet:ip-address 268 +--ro add-path-id uint32 269 +--ro automatic-steering 270 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 271 +--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 272 +--ro co-flag? enumeration 273 +--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 274 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv6-unicast: 275 +--ro routes 276 +--ro route* [prefix neighbor add-path-id] 277 +--ro prefix union 278 +--ro neighbor inet:ip-address 279 +--ro add-path-id uint32 280 +--ro automatic-steering 281 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 282 +--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 283 +--ro co-flag? enumeration 284 +--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 285 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: 286 +--ro routes 287 +--ro route* [prefix neighbor add-path-id] 288 +--ro prefix union 289 +--ro neighbor inet:ip-address 290 +--ro add-path-id uint32 291 +--ro automatic-steering 292 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 293 +--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 294 +--ro co-flag? enumeration 295 +--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 296 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: 297 +--ro routes 298 +--ro route* [prefix neighbor add-path-id] 299 +--ro prefix union 300 +--ro neighbor inet:ip-address 301 +--ro add-path-id uint32 302 +--ro automatic-steering 303 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 304 +--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 305 +--ro co-flag? enumeration 306 +--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 307 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: 308 +--ro routes 309 +--ro route* [rd prefix neighbor add-path-id] 310 +--ro rd rt-types:route-distinguisher 311 +--ro prefix union 312 +--ro neighbor inet:ip-address 313 +--ro add-path-id uint32 314 +--ro automatic-steering 315 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 316 +--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 317 +--ro co-flag? enumeration 318 +--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 319 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: 320 +--ro routes 321 +--ro route* [rd prefix neighbor add-path-id] 322 +--ro rd rt-types:route-distinguisher 323 +--ro prefix union 324 +--ro neighbor inet:ip-address 325 +--ro add-path-id uint32 326 +--ro automatic-steering 327 +--ro color? -> /rt:routing/control-plane-protocols/control-plane-protocol/bgp:bgp/global/ietf-bgp-srte:segment-routing/policy-state/sr-policy/color 328 +--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 329 +--ro co-flag? enumeration 330 +--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 332 ... 334 4. Yang Module 336 file "ietf-bgp-srte@2019-07-07.yang" 338 module ietf-bgp-srte { 340 namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-srte"; 342 prefix "ietf-bgp-srte"; 344 import ietf-routing-types { 345 prefix rt-types; 346 } 348 import ietf-routing { 349 prefix "rt"; 350 } 352 import ietf-inet-types { 353 prefix inet; 354 } 356 import ietf-bgp { 357 prefix bgp; 358 } 360 import ietf-bgp-types { 361 prefix bgp-types; 362 } 364 import ietf-srv6-types { 365 prefix srv6-types; 366 } 368 organization 369 "IETF Inter-Domain Routing Working Group"; 371 contact 372 "Inter-Domain working group - idr@ietf.org"; 374 description 375 "This YANG module defines a data model to configure and 376 manage segment routing extensions in BGP. 378 Terms and Acronyms 380 AF : Address Family 382 BGP (bgp) : Border Gateway Protocol 384 SR : Segment Routing 386 SID : Segment Identifier 388 SRv6 : Segment Routing with IPv6 Data plane 390 VPN : Virtual Private Network 392 VRF : Virtual Routing and Forwarding 394 "; 396 revision 2018-06-26 { 397 description 398 "Initial revision" ; 399 reference ""; 400 } 402 // 403 // New identities and typedefs for SR extensions 404 // 406 // SR Policy SAFI identities 407 identity IPV4_SRPOLICY { 408 base bgp-types:afi-safi-type; 409 description 410 "IPv4 SR Policy (AFI,SAFI = 1,73)"; 411 reference "TBD"; 412 } 414 identity IPV6_SRPOLICY { 415 base bgp-types:afi-safi-type; 416 description 417 "IPv6 SR Policy (AFI,SAFI = 2,73)"; 418 reference "TBD"; 420 } 422 // Sid type union 423 typedef sid-type { 424 type union { 425 type rt-types:mpls-label; 426 type srv6-types:srv6-sid; 427 } 428 description "Type definition for Segment Identifier. This is 429 a union type which can be either a SR MPLS SID in the 430 form of a label, or a SRv6 SID in the form of 431 an IPv6 address."; 432 reference "TBD"; 433 } 435 // 436 // SR Policy Related Groupings 437 // 438 //Color and Endpoint of the SR Policy 439 grouping sr-policy-color-endpoint { 440 description "Common grouping for SR Policy Color and 441 Endpoint"; 442 leaf color { 443 type uint32; 444 description "Color of the policy"; 445 } 447 leaf end-point { 448 type inet:ip-address; 449 description "Endpoint of the policy"; 450 } 451 } 452 // Authorized colors for On Demand SR Policy programming 453 grouping sr-odn-auth-colors { 454 description 455 "Authorized colors for On Demand (dynamic) SR Policies 456 towards BGP nexthops"; 457 container authorized-colors { 458 config false; 459 description 460 "Authorized colors for On Demand (dynamic) SR policies 461 towards BGP nexthops"; 462 list colors { 463 key "color"; 464 description "List of SR Policy Colors"; 465 leaf color { 466 type uint32; 467 description "Color value"; 469 } 470 } 471 } 472 } 474 grouping sr-policy-cmn-state { 475 description "Common state parameters applicable to 476 SR Policies"; 477 leaf policy-state { 478 type enumeration { 479 enum UP { 480 description "SR Policy state UP"; 481 } 482 enum DOWN { 483 description "SR Policy state DOWN"; 484 } 485 } 486 description "SR Policy forwarding state"; 487 } 489 leaf binding-sid { 490 type sid-type; 491 description "Binding SID of the SR Policy"; 492 } 494 leaf steering-disabled { 495 type empty; 496 description "This attribute is set if steering 497 is disabled on this SR policy"; 498 } 500 leaf ref-count { 501 type uint32; 502 description "Count of routes steering over this policy"; 503 } 504 } 506 // 507 // SR Policy State grouping 508 // 509 grouping sr-policy-state { 510 description "SR Policy State"; 511 container policy-state { 512 config false; 513 description "SR Policy State"; 514 list sr-policy { 515 key "color end-point"; 516 description "List of SR Policies"; 517 uses sr-policy-color-endpoint; 519 // State of the SR Policy in BGP 520 uses sr-policy-cmn-state; 521 } 522 } 523 } 525 grouping sr-exp-policy-cp-state { 526 description "State of BGP signaled SR Policy (explicit) 527 candidate paths"; 528 container explicit-policies { 529 config false; 530 description "BGP signaled explicit SR Policies"; 531 list sr-policy { 532 key "distinguisher color end-point"; 533 description "List of BGP signaled explicit SR Policies"; 534 leaf distinguisher { 535 type uint32; 536 description "Distinguisher of the SR Policy 537 candidate path"; 538 } 540 uses sr-policy-color-endpoint; 542 leaf preference { 543 type uint32; 544 description "Preference of the SR Policy candidate path"; 545 } 547 container explicit-binding-sid { 548 description "Explicitly supplied Binding SID 549 for this policy"; 550 leaf binding-sid { 551 type sid-type; 552 description "Binding SID value"; 553 } 554 leaf strict { 555 type boolean; 556 description "Boolean indicating that the node 557 must use only the supplied Binding SID 558 for this SR Policy. 559 reference: TBD"; 560 } 561 leaf drop-on-invalid { 562 type boolean; 563 description "Boolean to indicate drop upon invalid 564 policy, behavior. This overwrites the 565 default behavior of fallback to IGP path 566 , when SR Policy is (or becomes) invalid. 567 reference: TBD"; 568 } 569 } 571 leaf usable { 572 type boolean; 573 description "Boolean to indicate that the SR Policy is 574 usable on this node. 575 reference: TBD"; 576 } 578 leaf registered { 579 type boolean; 580 description "Boolean to indicate that the SR policy 581 is registered with policy manager to 582 install the corresponding forwarding entry"; 584 } 586 // TODO: Segment Lists and other parameters from SR Policy model 587 // to be imported here. 588 } 589 } 590 } 592 grouping sr-odn-policies { 593 description "SR On Demand (dynamic) SR Policies"; 594 container installed-policies { 595 config false; 596 description "BGP triggered On Demand (dynamic) SR Policies 597 corresponding to the BGP nexthops"; 598 list sr-policy { 599 key "color end-point"; 600 description "SR Policy list"; 601 uses sr-policy-color-endpoint; 602 } 603 } 604 } 606 grouping sr-policy-steering-state { 607 description "Per route Automatic Steering parameters"; 608 container automatic-steering { 609 description "Per route Automatic Steering parameters"; 610 leaf color { 611 type leafref { 612 path "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 613 "bgp:bgp/bgp:global/ietf-bgp-srte:segment-routing/" + 614 "ietf-bgp-srte:policy-state/ietf-bgp-srte:sr-policy/" + 615 "ietf-bgp-srte:color"; 616 } 617 description "Color of the SR Policy being used for 618 Automatic Steering"; 619 } 620 leaf end-point { 621 type leafref { 622 path "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 623 "bgp:bgp/bgp:global/ietf-bgp-srte:segment-routing/" + 624 "ietf-bgp-srte:policy-state/ietf-bgp-srte:sr-policy/" + 625 "ietf-bgp-srte:end-point"; 626 } 627 description "End-point of the SR Policy being used 628 for Automatic Steering"; 629 } 630 leaf co-flag { 631 type enumeration { 632 enum 00 { 633 description "Color-Only flag 00"; 634 } 635 enum 01 { 636 description "Color-Only flag 01"; 637 } 638 enum 10 { 639 description "Color-Only flag 10"; 640 } 641 } 642 default "00"; 643 description "Color-Only (CO) flags applicable for 644 Automatic Steering of this route"; 645 } 646 leaf binding-sid { 647 type leafref { 648 path "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 649 "bgp:bgp/bgp:global/ietf-bgp-srte:segment-routing/" + 650 "ietf-bgp-srte:policy-state/ietf-bgp-srte:sr-policy/" + 651 "ietf-bgp-srte:binding-sid"; 652 } 653 description "Binding SID of the SR Policy"; 654 } 655 } 656 } 658 grouping route-key-leafs { 659 description "Grouping for key leafs identifying a route"; 660 leaf prefix { 661 type union { 662 type inet:ip-prefix; 663 type string; 664 } 665 description "BGP Prefix. This is a temp definition to 666 cover ip-prefix and other NLRI formats. 667 Import the type once defined in base 668 BGP RIB model"; 669 } 670 leaf neighbor { 671 type inet:ip-address; 672 description "BGP Neighbor"; 673 } 674 leaf add-path-id { 675 type uint32; 676 description "Add-path ID"; 677 } 678 } 680 grouping common-bgp-route-grouping { 681 description "BGP route list" ; 682 container routes { 683 config false; 684 description "BGP Route in local RIB"; 685 list route { 686 key "prefix neighbor add-path-id"; 687 description "BGP route list"; 688 uses route-key-leafs; 689 } 690 } 691 } 693 grouping common-bgp-vpn-route-grouping { 694 description "BGP route list" ; 695 container routes { 696 config false; 697 description "BGP VPN Route in local RIB"; 698 list route { 699 key "rd prefix neighbor add-path-id"; 700 description "Route List"; 702 leaf rd { 703 type rt-types:route-distinguisher; 704 description "Route Distinguisher"; 705 } 706 uses route-key-leafs; 707 } 708 } 710 } 712 // 713 // BGP Specific Paramters 714 // 715 // Augment AF with route list 716 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 717 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-unicast" { 718 description 719 "Augment BGP SAFI route"; 720 uses common-bgp-route-grouping; 721 } 722 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 723 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv6-unicast" { 724 description 725 "Augment BGP SAFI route"; 726 uses common-bgp-route-grouping; 727 } 728 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 729 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv4-labeled-unicast" { 730 description 731 "Augment BGP SAFI route"; 732 uses common-bgp-route-grouping; 734 } 735 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 736 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:ipv6-labeled-unicast" { 737 description 738 "Augment BGP SAFI route"; 739 uses common-bgp-route-grouping; 740 } 741 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 742 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:l3vpn-ipv4-unicast" { 743 description 744 "Augment BGP SAFI route"; 745 uses common-bgp-vpn-route-grouping; 746 } 747 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 748 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi/bgp:l3vpn-ipv6-unicast" { 749 description 750 "Augment BGP SAFI route"; 751 uses common-bgp-vpn-route-grouping; 752 } 754 // SR Policy Related 755 // On Demand authorized colors table 756 // SR Policy state data 757 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 758 "bgp:bgp/bgp:global" { 759 description 760 "Segment Routing parameters in BGP global model"; 761 container segment-routing { 762 description "Segment Routing parameters"; 763 container on-demand-policies { 764 description 765 "Segment Routing On Demand Nexthop 766 (ODN) SR Policies"; 767 uses sr-odn-auth-colors; 768 uses sr-odn-policies; 769 } 770 uses sr-policy-state; 771 } 772 } 774 // Steering state in overlay BGP routes 775 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 776 "bgp:bgp/bgp:global/bgp:afi-safis/" + 777 "bgp:afi-safi/bgp:ipv4-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 778 description 779 "Augment BGP SAFI route with steering info"; 780 uses sr-policy-steering-state; 781 } 782 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 783 "bgp:bgp/bgp:global/bgp:afi-safis/" + 784 "bgp:afi-safi/bgp:ipv6-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 785 description 786 "Augment BGP SAFI route with steering info"; 787 uses sr-policy-steering-state; 788 } 789 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 790 "bgp:bgp/bgp:global/bgp:afi-safis/" + 791 "bgp:afi-safi/bgp:ipv4-labeled-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 792 description 793 "Augment BGP SAFI route with steering info"; 794 uses sr-policy-steering-state; 795 } 796 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 797 "bgp:bgp/bgp:global/bgp:afi-safis/" + 798 "bgp:afi-safi/bgp:ipv6-labeled-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 799 description 800 "Augment BGP SAFI route with steering info"; 801 uses sr-policy-steering-state; 802 } 803 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 804 "bgp:bgp/bgp:global/bgp:afi-safis/" + 805 "bgp:afi-safi/bgp:l3vpn-ipv4-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 807 description 808 "Augment BGP SAFI route with steering info"; 809 uses sr-policy-steering-state; 810 } 811 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 812 "bgp:bgp/bgp:global/bgp:afi-safis/" + 813 "bgp:afi-safi/bgp:l3vpn-ipv6-unicast/ietf-bgp-srte:routes/ietf-bgp-srte:route" { 814 description 815 "Augment BGP SAFI route with steering info"; 816 uses sr-policy-steering-state; 817 } 819 // BGP Signaled SR Policy explicit candidate paths state 820 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 821 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi" { 822 description "Augment IPv4 SR Policy SAFI list entry"; 823 container ipv4-srpolicy { 824 when "../afi-safi-name = 'bgp-types:IPV4_SRPOLICY'" { 825 description 826 "Include this container for IPv4 SR Policy specific 827 configuration"; 828 } 829 description "IPv4 SR Policy specific parameters"; 830 uses sr-exp-policy-cp-state; 831 } 832 } 834 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" + 835 "bgp:bgp/bgp:global/bgp:afi-safis/bgp:afi-safi" { 836 description "Augment IPv6 SR Policy SAFI list entry"; 837 container ipv6-srpolicy { 838 when "../afi-safi-name = 'bgp-types:IPV6_SRPOLICY'" { 839 description 840 "Include this container for IPv6 SR Policy specific 841 configuration"; 842 } 843 description "IPv6 SR Policy specific parameters"; 844 uses sr-exp-policy-cp-state; 845 } 846 } 847 } 849 850 5. Contributors 852 Dhanendra Jain 853 Cisco Systems 854 US 856 Email: dhanendra.ietf@gmail.com 858 Zhichun Jiang 859 Cisco Systems 860 US 862 Email: zcjiang@tencent.com 864 Zafar Ali 865 Cisco Systems 866 US 868 Email: zali@cisco.com 870 Sharmila Palani 871 Cisco Systems 872 US 874 Email: spalani@cisco.com 876 6. IANA Considerations 878 7. Security Considerations 880 The transport protocol used for sending the BGP Segment Routing data 881 MUST support authentication and SHOULD support encryption. The data- 882 model by itself does not create any security implications. 884 This draft does not change any underlying security issues inherent in 885 [I-D.ietf-idr-bgp-model]. 887 8. Acknowledgements 889 TBD. 891 9. References 893 9.1. Normative References 895 [I-D.ietf-idr-bgp-model] 896 Jethanandani, M., Patel, K., and S. Hares, "BGP YANG Model 897 for Service Provider Networks", draft-ietf-idr-bgp- 898 model-06 (work in progress), June 2019. 900 [I-D.ietf-idr-segment-routing-te-policy] 901 Previdi, S., Filsfils, C., Mattes, P., Rosen, E., Jain, 902 D., and S. Lin, "Advertising Segment Routing Policies in 903 BGP", draft-ietf-idr-segment-routing-te-policy-07 (work in 904 progress), July 2019. 906 [I-D.ietf-spring-segment-routing-policy] 907 Filsfils, C., Sivabalan, S., daniel.voyer@bell.ca, d., 908 bogdanov@google.com, b., and P. Mattes, "Segment Routing 909 Policy Architecture", draft-ietf-spring-segment-routing- 910 policy-03 (work in progress), May 2019. 912 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 913 Requirement Levels", BCP 14, RFC 2119, 914 DOI 10.17487/RFC2119, March 1997, 915 . 917 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 918 the Network Configuration Protocol (NETCONF)", RFC 6020, 919 DOI 10.17487/RFC6020, October 2010, 920 . 922 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 923 and A. Bierman, Ed., "Network Configuration Protocol 924 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 925 . 927 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 928 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 929 May 2017, . 931 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 932 and R. Wilton, "Network Management Datastore Architecture 933 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 934 . 936 9.2. Informative References 938 [I-D.ietf-spring-srv6-network-programming] 939 Filsfils, C., Camarillo, P., Leddy, J., 940 daniel.voyer@bell.ca, d., Matsushima, S., and Z. Li, "SRv6 941 Network Programming", draft-ietf-spring-srv6-network- 942 programming-01 (work in progress), July 2019. 944 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 945 RFC 7951, DOI 10.17487/RFC7951, August 2016, 946 . 948 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 949 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 950 . 952 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 953 Decraene, B., Litkowski, S., and R. Shakir, "Segment 954 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 955 July 2018, . 957 [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of 958 Documents Containing YANG Data Models", BCP 216, RFC 8407, 959 DOI 10.17487/RFC8407, October 2018, 960 . 962 Authors' Addresses 964 Kausik Majumdar 965 Cisco 966 170 W. Tasman Drive 967 San Jose, CA 95134 968 USA 970 Email: kmajumda@cisco.com 972 Kamran Raza 973 Cisco 974 2000 Innovation Drive 975 Kanata, ON K2K-3E8 976 CA 978 Email: skraza@cisco.com 980 Bruno Decraene 981 Orange 982 France 984 Email: bruno.decraene@orange.com 985 Zhichun Jiang 986 Tencent 988 Email: zcjiang@tencent.com