idnits 2.17.1 draft-ietf-idr-bgp-model-01.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 1 instance of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 2116 has weird spacing: '...unicast speci...' -- The document date (January 7, 2016) is 3003 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) ** Obsolete normative reference: RFC 3065 (Obsoleted by RFC 5065) == Outdated reference: A later version (-25) exists of draft-ietf-netmod-routing-cfg-20 == Outdated reference: A later version (-05) exists of draft-rtgyangdt-rtgwg-device-model-01 Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Interdomain Routing A. Shaikh, Ed. 3 Internet-Draft Google 4 Intended status: Standards Track R. Shakir, Ed. 5 Expires: July 10, 2016 Jive Communications 6 K. Patel, Ed. 7 Cisco 8 S. Hares, Ed. 9 Huawei 10 K. D'Souza 11 AT&T 12 D. Bansal 13 Microsoft 14 A. Clemm 15 A. Zhdankin 16 Cisco 17 M. Jethanandani 18 Ciena 19 X. Liu 20 Ericsson 21 January 7, 2016 23 BGP Model for Service Provider Networks 24 draft-ietf-idr-bgp-model-01 26 Abstract 28 This document defines a YANG data model for configuring and managing 29 BGP, including protocol, policy, and operational aspects based on 30 data center, carrier and content provider operational requirements. 32 Status of This Memo 34 This Internet-Draft is submitted in full conformance with the 35 provisions of BCP 78 and BCP 79. 37 Internet-Drafts are working documents of the Internet Engineering 38 Task Force (IETF). Note that other groups may also distribute 39 working documents as Internet-Drafts. The list of current Internet- 40 Drafts is at http://datatracker.ietf.org/drafts/current/. 42 Internet-Drafts are draft documents valid for a maximum of six months 43 and may be updated, replaced, or obsoleted by other documents at any 44 time. It is inappropriate to use Internet-Drafts as reference 45 material or to cite them other than as "work in progress." 47 This Internet-Draft will expire on July 10, 2016. 49 Copyright Notice 51 Copyright (c) 2016 IETF Trust and the persons identified as the 52 document authors. All rights reserved. 54 This document is subject to BCP 78 and the IETF Trust's Legal 55 Provisions Relating to IETF Documents 56 (http://trustee.ietf.org/license-info) in effect on the date of 57 publication of this document. Please review these documents 58 carefully, as they describe your rights and restrictions with respect 59 to this document. Code Components extracted from this document must 60 include Simplified BSD License text as described in Section 4.e of 61 the Trust Legal Provisions and are provided without warranty as 62 described in the Simplified BSD License. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 67 1.1. Goals and approach . . . . . . . . . . . . . . . . . . . 3 68 2. Model overview . . . . . . . . . . . . . . . . . . . . . . . 4 69 2.1. BGP protocol configuration . . . . . . . . . . . . . . . 5 70 2.2. Policy configuration overview . . . . . . . . . . . . . . 6 71 2.3. Operational data overview . . . . . . . . . . . . . . . . 7 72 3. Relation to other YANG data models . . . . . . . . . . . . . 8 73 4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 74 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 75 6. YANG modules . . . . . . . . . . . . . . . . . . . . . . . . 9 76 6.1. BGP base items . . . . . . . . . . . . . . . . . . . . . 9 77 6.2. BGP base types . . . . . . . . . . . . . . . . . . . . . 28 78 6.3. BGP policy items . . . . . . . . . . . . . . . . . . . . 34 79 6.4. BGP multiprotocol items . . . . . . . . . . . . . . . . . 44 80 6.5. BGP operational data items . . . . . . . . . . . . . . . 56 81 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 63 82 7.1. Normative references . . . . . . . . . . . . . . . . . . 63 83 7.2. Informative references . . . . . . . . . . . . . . . . . 64 84 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 65 85 Appendix B. Change summary . . . . . . . . . . . . . . . . . . . 65 86 B.1. Changes between revisions -00 and -01 . . . . . . . . . . 65 87 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 65 89 1. Introduction 91 YANG [RFC6020] is a data modeling language that was introduced to 92 define the contents of a conceptual data store that allows networked 93 devices to be managed using NETCONF [RFC6241]. YANG is proving 94 relevant beyond its initial confines, as bindings to other interfaces 95 (e.g. ReST) and encodings other than XML (e.g. JSON) are being 96 defined. Furthermore, YANG data models can be used as the basis of 97 implementation for a number of interfaces, such as CLIs and 98 programmatic APIs. 100 This document describes a YANG data model for the BGP [RFC4271] 101 protocol, including various protocol extensions, policy 102 configuration, as well as defining key operational state data. The 103 model is intended to be vendor-neutral, in order to allow operators 104 to manage BGP configuration in heterogeneous environments with 105 routers supplied by multiple vendors. The model is also intended to 106 be readily mapped to existing implementations to facilitate support 107 from as large a set of routing hardware and software vendors as 108 possible. 110 1.1. Goals and approach 112 The model covers the base BGP features that are deployed across major 113 implementations and the common BGP configurations in use across a 114 number of operator network deployments. In particular, this model 115 attempts to cover BGP features defined in [RFC4271], [RFC1997], 116 [RFC4456], [RFC4760], [RFC3065], [RFC2439], [RFC4724], and [RFC6811]. 118 Along with configuration of base BGP features, this model also 119 addresses policy configuration, by providing "hooks" for applying 120 policies, and also defining BGP-specific policy features. The BGP 121 policy features are intended to be used with the general routing 122 policy model defined in [I-D.shaikh-rtgwg-policy-model]. The model 123 also supports operational state data to enable a common model for 124 reading BGP-related state from a BGP speaker. 126 For the base BGP features, the focus of the model described in this 127 document is on providing configuration and operational state 128 information relating to: 130 o The global BGP instance, and neighbors whose configuration is 131 specified individually, or templated with the use of peer-groups. 133 o The address families that are supported by peers, and the global 134 configuration which relates to them. 136 o The policy configuration "hooks" and BGP-specific policy features 137 that relate to a neighbor - controlling the import and export of 138 NLRIs. 140 As mentioned earlier, any configuration items that are deemed to be 141 widely available in existing major BGP implementations are included 142 in the model. Additional, more esoteric, configuration items that 143 are not commonly used, or only available from a single 144 implementation, are omitted from the model with an expectation that 145 they will be available in companion modules that augment the current 146 model. This allows clarity in identifying data that is part of the 147 vendor-neutral base model. 149 Where possible, naming in the model follows conventions used in 150 available standards documents, and otherwise tries to be self- 151 explanatory with sufficient descriptions of the intended behavior. 152 Similarly, configuration data value constraints and default values, 153 where used, are based on recommendations in current standards 154 documentation. Since implementations vary widely in this respect, 155 this version of the model specifies only a limited set of defaults 156 and ranges with the expectation of being more prescriptive in future 157 versions based on actual operator use. 159 2. Model overview 161 The BGP model is defined across several YANG modules but at a high 162 level is organized into Six elements: 164 o base protocol configuration -- configuration affecting BGP 165 protocol-related operations, defined at various levels of 166 hierarchy. 168 o multiprotocol configuration -- configuration affecting individual 169 address-families within BGP [RFC4760]. 171 o neighbor configuration -- configuration affecting an individual 172 neighbor within BGP. 174 o neighbor multiprotocol configuration -- configuration affecting 175 individual address-families for a neighbor within BGP. 177 o policy configuration -- hooks for application of the policies 178 defined in [I-D.shaikh-rtgwg-policy-model] that act on routes sent 179 (received) to (from) peers or other routing protocols and BGP- 180 specific policy features. 182 o operational state -- variables used for monitoring, management, 183 etc. of BGP operations. 185 These modules also make use of standard Internet types, such as IP 186 addresses and prefixes, autonomous system numbers, etc., defined in 187 RFC 6991 [RFC6991]. 189 Throughout the model, the approach described in 190 [I-D.openconfig-netmod-opstate] is used to represent configuration 191 (intended state), operational and derived state data. That is to 192 say, that each container holds a "config" and "state" sub-container - 193 with the config container being used for configurable parameters, and 194 the state container container holding representing both the 195 operational state of configurable leaves, and derived counters and 196 statistical information. 198 2.1. BGP protocol configuration 200 The BGP protocol configuration model is organized hierarchically, 201 much like the majority of router implementations. That is, 202 configuration items can be specified at multiple levels, as shown 203 below. 205 +--rw bgp! 206 +--rw global 207 | +-- (global-configuration-options) 208 +--rw neighbors 209 | +--rw neighbor* [neighbor-address] 210 | +-- (neighbor-configuration-options) 211 +--rw peer-groups 212 +--rw peer-group* [peer-group-name] 213 +-- (neighbor-configuration-options) 215 Users may specify configuration at a higher level and have it apply 216 to all lower-level items, or provide overriding configuration at a 217 lower level of the hierarchy. Overriding configuration items are 218 optional, with neighbor specific configuration being the most 219 specific or lowest level, followed by peer-group, and finally global. 220 Global configuration options reflect a subset of the peer-group or 221 neighbor specific configuration options which are relevant to the 222 entire BGP instance. 224 The model makes the simplifying assumption that most of the 225 configuration items are available at all levels of the hierarchy. 226 That is, very little configuration is specific to a particular level 227 in the hierarchy, other than obvious items such as "group-name" only 228 being available for the peer group-level config. A notable exception 229 is for sub-address family configuration where some items are only 230 applicable for a given AFI-SAFI combination. 232 In order to allow common configuration to be applied to a set of 233 neighbors, all neighbor configuration options are available within a 234 peer-group. A neighbor is associated to a particular peer-group 235 through the use of a peer-group leaf (which provides a reference to a 236 configured item in the peer-group list). 238 Address-family configuration is made available in multiple points 239 within the model - primarily within the global container, where 240 instance-wide configuration can be set (for example, global protocol 241 parameters, the BGP best path route selection options, or global 242 policies relating to the address-family); and on a per-neighbor or 243 per-peer-group basis, where address-families can be enabled or 244 disabled, and policy associated with the parent entity applied. 245 Within the afi-safi container, generic configuration that applies to 246 all address-families (e.g., whether the AFI-SAFI is enabled) is 247 presented at the top-level, with address-family specific containers 248 made available for options relating to only that AFI-SAFI. Within 249 the current revision of the model a generic set of address-families, 250 and common configuration and state options are included - further 251 work is expected to add additional parameters to this area of the 252 model. 254 The following address-families are currently supported by the model: 256 +--rw bgp! 257 +--rw global 258 +--rw afi-safis 259 +--rw afi-safi* [afi-safi-name] 260 +--rw afi-safi-name -> ../config/afi-safi-name 261 | 262 +--rw ipv4-unicast 263 | ... 264 +--rw ipv6-unicast 265 | ... 266 +--rw ipv4-labelled-unicast 267 | ... 268 +--rw ipv6-labelled-unicast 269 | ... 270 +--rw l3vpn-ipv4-unicast 271 | ... 272 +--rw l3vpn-ipv6-unicast 273 | ... 274 +--rw l3vpn-ipv4-multicast 275 | ... 276 +--rw l3vpn-ipv6-multicast 277 | ... 278 +--rw l2vpn-vpls 279 | ... 280 +--rw l2vpn-evpn 281 | ... 283 2.2. Policy configuration overview 285 The BGP policy configuration model references the generic YANG 286 routing policy model described in [I-D.shaikh-rtgwg-policy-model], 287 which represents a condition-action policy framework for routing. 288 This model adds BGP-specific conditions (e.g., matching on the 289 community attribute), and actions (e.g., setting local preference) to 290 the generic policy framework. 292 Policies that are defined in the routing-policy model are referenced 293 in multiple places within the model: 295 o within the global instance, where a policy applies to all address- 296 families for all peers. 298 o on a global AFI-SAFI basis, where policies apply to all peers for 299 a particular address-family. 301 o on a per-peer-group or per-neighbor basis - where the policy 302 applies to all address-families for the particular parent entity. 304 o on a per-afi-safi basis within a neighbor or peer-group context, 305 where the policy is specific to the AFI-SAFI for a a specific 306 neighbor or group. 308 +--rw bgp 309 +--rw global 310 | +--rw afi-safi 311 | | +--rw afi-safi* [afi-safi-name] 312 | | +--rw apply-policy 313 | +--rw apply-policy 314 +--rw neighbors 315 | +--rw neighbor* [neighbor-address] 316 | +--rw afi-safi 317 | | +--rw afi-safi* [afi-safi-name] 318 | | +--rw apply-policy 319 | +--rw apply-policy 320 +--rw peer-groups 321 +--rw peer-group* [peer-group-name] 322 +--rw afi-safi 323 | +--rw afi-safi* [afi-safi-name] 324 | +--rw apply-policy 325 +--rw apply-policy 327 2.3. Operational data overview 329 The BGP operational model contains a set of parameters which relate 330 to the operational state of the various elements of the BGP router. 331 As noted in Section 2 - the approach described in 332 [I-D.openconfig-netmod-opstate] is utilized for the inclusion of 333 operational and statistical data. To this end, the "_state" 334 groupings (those that contain derived operational parameters) are 335 contained within the BGP operational model - and included within the 336 relevant "state" containers throughout the core BGP model. In some 337 cases, operational information may be relevant to one instance of a 338 common grouping, but not another - for example, the number of 339 received, advertised, and installed prefixes is relevant on a per- 340 neighbor-basis, but is not required (or meaningful) in the peer-group 341 context. To enable state to be added to particular contexts, the 342 tree is augmented through the base BGP module to add these variables, 343 without requiring separate groupings. 345 3. Relation to other YANG data models 347 The BGP model is intended to work within a larger framework model, 348 such as the Routing Management model [I-D.ietf-netmod-routing-cfg] or 349 the Network Device Organizational Model 350 [I-D.rtgyangdt-rtgwg-device-model], both of which define the notion 351 of routing instances, or VRFs. 353 For example, for integration with the Routing Management model, the 354 following additions to the BGP model could be made: 356 o a new identity type for BGP that is derived from rt:routing- 357 protocol 359 o augmentation of the "/rt:routing/rt:routing-instance/rt:routing- 360 protocols/routing-protocol" container with BGP-specific parameters 362 o possible addition of BGP-specific route attributes in 363 "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" and 364 "/rt:active-route/rt:output/rt:route" 366 Future updates of the BGP model and this document will further 367 develop the integration with other framework models related to 368 routing protocols. 370 4. Security Considerations 372 BGP configuration has a significant impact on network operations, and 373 as such any related protocol or model carries potential security 374 risks. 376 YANG data models are generally designed to be used with the NETCONF 377 protocol over an SSH transport. This provides an authenticated and 378 secure channel over which to transfer BGP configuration and 379 operational data. Note that use of alternate transport or data 380 encoding (e.g., JSON over HTTPS) would require similar mechanisms for 381 authenticating and securing access to configuration data. 383 Most of the data elements in the configuration model could be 384 considered sensitive from a security standpoint. Unauthorized access 385 or invalid data could cause major disruption. 387 5. IANA Considerations 389 An appropriate namespace URI will be registered in the IETF XML 390 Registry" [RFC3688]. The BGP YANG modules will be registered in the 391 "YANG Module Names" registry [RFC6020]. 393 6. YANG modules 395 The modules comprising the BGP configuration and operational model 396 are described by the YANG modules in the sections below. The base 397 module imports the other modules to create the overall model. 399 6.1. BGP base items 401 file "ietf-bgp.yang" 402 module ietf-bgp { 403 yang-version "1"; 405 namespace "urn:ietf:params:xml:ns:yang:ietf-bgp"; 406 prefix "bgp"; 407 // import some basic inet types 408 import ietf-inet-types { prefix inet; } 409 import ietf-bgp-multiprotocol { prefix bgp-mp; } 410 import ietf-routing-policy { prefix rpol; } 411 import ietf-bgp-types { prefix bgp-types; } 412 import ietf-bgp-operational { prefix bgp-op; } 413 // meta 414 organization 415 "OpenConfig working group"; 416 contact 417 "OpenConfig working group 418 netopenconfig@googlegroups.com"; 419 description 420 "This module describes a YANG model for BGP protocol 421 configuration.It is a limited subset of all of the configuration 422 parameters available in the variety of vendor implementations, 423 hence it is expected that it would be augmented with vendor- 424 specific configuration data as needed. Additional modules or 425 submodules to handle other aspects of BGP configuration, 426 including policy, VRFs, VPNs, and additional address families 427 are also expected. 428 This model supports the following BGP configuration level 429 hierarchy: 430 BGP 431 | 432 +-> [ global BGP configuration ] 433 +-> AFI / SAFI global 434 +-> peer group 435 +-> [ peer group config ] 436 +-> AFI / SAFI [ per-AFI overrides ] 437 +-> neighbor 438 +-> [ neighbor config ] 439 +-> [ optional pointer to peer-group ] 440 +-> AFI / SAFI [ per-AFI overrides ]"; 441 revision "2016-01-06" { 442 description 443 "Updated filename and namespace"; 444 reference "TBD"; 445 } 446 grouping bgp-global_config { 447 description 448 "Global configuration options for the BGP router."; 449 leaf as { 450 type inet:as-number; 451 mandatory "true"; 452 description 453 "Local autonomous system number of the router. Uses 454 the 32-bit as-number type from the model in RFC 6991."; 455 } 456 leaf router-id { 457 type inet:ipv4-address; 458 description 459 "Router id of the router, expressed as an 460 32-bit value, IPv4 address."; 461 } 462 } 463 grouping bgp-default-route-distance_config { 464 description 465 "Configuration options relating to the administrative distance 466 (or preference) assigned to routes received from different 467 sources (external, internal, and local)."; 468 leaf external-route-distance { 469 type uint8 { 470 range "1..255"; 471 } 472 description 473 "Administrative distance for routes learned from external 474 BGP (eBGP)."; 475 } 476 leaf internal-route-distance { 477 type uint8 { 478 range "1..255"; 480 } 481 description 482 "Administrative distance for routes learned from internal 483 BGP (iBGP)."; 484 } 485 } 486 grouping bgp-confederation_config { 487 description 488 "Configuration options specifying parameters when the local 489 router is within an autonomous system which is part of a BGP 490 confederation."; 491 leaf enabled { 492 type boolean; 493 description 494 "When this leaf is set to true it indicates that 495 the local-AS is part of a BGP confederation"; 496 } 497 leaf identifier { 498 type inet:as-number; 499 description 500 "Confederation identifier for the autonomous system."; 501 } 502 leaf-list member-as { 503 type inet:as-number; 504 description 505 "Remote autonomous systems that are to be treated 506 as part of the local confederation."; 507 } 508 } 509 grouping bgp-neighbor_config { 510 description 511 "Neighbor level configuration items."; 512 leaf peer-as { 513 type inet:as-number; 514 description 515 "AS number of the peer."; 516 } 517 leaf local-as { 518 type inet:as-number; 519 description 520 "The local autonomous system number that is to be used 521 when establishing sessions with the remote peer or peer 522 group, if this differs from the global BGP router 523 autonomous system number."; 524 } 525 leaf peer-type { 526 type bgp-types:peer-type; 527 description 528 "Explicitly designate the peer or peer group as internal 529 (iBGP) or external (eBGP)."; 530 } 531 leaf auth-password { 532 type string; 533 description 534 "Configures an MD5 authentication password for use with 535 neighboring devices."; 536 } 537 leaf remove-private-as { 538 // could also make this a container with a flag to enable 539 // remove-private and separate option. here, option implies 540 // remove-private is enabled. 541 type bgp-types:remove-private-as-option; 542 description 543 "Remove private AS numbers from updates sent to peers."; 544 } 545 leaf route-flap-damping { 546 type boolean; 547 default false; 548 description 549 "Enable route flap damping."; 550 } 551 leaf send-community { 552 type bgp-types:community-type; 553 default "NONE"; 554 description 555 "Specify which types of community should be sent to the 556 neighbor or group. The default is to not send the 557 community attribute"; 558 } 559 leaf description { 560 type string; 561 description 562 "An optional textual description (intended primarily for use 563 with a peer or group"; 564 } 565 } 566 grouping bgp-neighbor-timers_config { 567 description 568 "Config parameters related to timers associated with the BGP 569 peer"; 570 leaf connect-retry { 571 type decimal64 { 572 fraction-digits 2; 573 } 574 default 30; 575 description 576 "Time interval in seconds between attempts to establish a 577 session with the peer."; 578 } 579 leaf hold-time { 580 type decimal64 { 581 fraction-digits 2; 582 } 583 default 90; 584 description 585 "Time interval in seconds that a BGP session will be 586 considered active in the absence of keepalive or other 587 messages from the peer. The hold-time is typically 588 set to 3x the keepalive-interval."; 589 reference 590 "RFC 4271 - A Border Gateway Protocol 4, Sec. 10"; 591 } 592 leaf keepalive-interval { 593 type decimal64 { 594 fraction-digits 2; 595 } 596 default 30; 597 description 598 "Time interval in seconds between transmission of keepalive 599 messages to the neighbor. Typically set to 1/3 the 600 hold-time."; 601 } 602 leaf minimum-advertisement-interval { 603 type decimal64 { 604 fraction-digits 2; 605 } 606 default 30; 607 description 608 "Minimum time which must elapse between subsequent UPDATE 609 messages relating to a common set of NLRI being transmitted 610 to a peer. This timer is referred to as 611 MinRouteAdvertisementIntervalTimer by RFC 4721 and serves to 612 reduce the number of UPDATE messages transmitted when a 613 particular set of NLRI exhibit instability."; 614 reference 615 "RFC 4271 - A Border Gateway Protocol 4, Sec 9.2.1.1"; 616 } 617 } 618 grouping bgp-neighbor-transport_config { 619 description 620 "Configuration parameters relating to the transport protocol 621 used by the BGP session to the peer"; 622 leaf tcp-mss { 623 type uint16; 624 description 625 "Sets the max segment size for BGP TCP sessions."; 626 } 627 leaf mtu-discovery { 628 type boolean; 629 default false; 630 description 631 "Turns path mtu discovery for BGP TCP sessions on (true) 632 or off (false)"; 633 } 634 leaf passive-mode { 635 type boolean; 636 default false; 637 description 638 "Wait for peers to issue requests to open a BGP session, 639 rather than initiating sessions from the local router."; 640 } 641 leaf local-address { 642 type union { 643 type inet:ip-address; 644 type string; 645 } 646 //TODO: the string should be converted to a leafref type 647 //to point to an interface when YANG 1.1 is available with 648 //leafrefs in union types. 649 description 650 "Set the local IP (either IPv4 or IPv6) address to use 651 for the session when sending BGP update messages. This 652 may be expressed as either an IP address or reference 653 to the name of an interface."; 654 } 655 } 656 grouping bgp-neighbor-error-handling_config { 657 description 658 "Configuration parameters relating to enhanced error handling 659 behaviours for BGP"; 660 leaf treat-as-withdraw { 661 type boolean; 662 default "false"; 663 description 664 "Specify whether erroneous UPDATE messages for which the 665 NLRI can be extracted are reated as though the NLRI is 666 withdrawn - avoiding session reset"; 667 reference "draft-ietf-idr-error-handling-16"; 668 } 669 } 670 grouping bgp-neighbor-logging-options_config { 671 description 672 "Configuration parameters specifying the logging behaviour for 673 BGP sessions to the peer"; 674 leaf log-neighbor-state-changes { 675 type boolean; 676 default "true"; 677 description 678 "Configure logging of peer state changes. Default is 679 to enable logging of peer state changes."; 680 } 681 } 682 grouping bgp-neighbor-multihop_config { 683 description 684 "Configuration parameters specifying the multihop behaviour for 685 BGP sessions to the peer"; 686 leaf enabled { 687 type boolean; 688 default "false"; 689 description 690 "When enabled the referenced group or neighbors are permitted 691 to be indirectly connected - including cases where the TTL 692 can be decremented between the BGP peers"; 693 } 694 leaf multihop-ttl { 695 type uint8; 696 description 697 "Time-to-live value to use when packets are sent to the 698 referenced group or neighbors and ebgp-multihop is enabled"; 699 } 700 } 701 grouping bgp-neighbor-route-reflector_config { 702 description 703 "Configuration parameters determining whether the behaviour of 704 the local system when acting as a route-reflector"; 705 leaf route-reflector-cluster-id { 706 type bgp-types:rr-cluster-id-type; 707 description 708 "route-reflector cluster id to use when local router is 709 configured as a route reflector. Commonly set at the group 710 level, but allows a different cluster 711 id to be set for each neighbor."; 712 } 713 leaf route-reflector-client { 714 type boolean; 715 default "false"; 716 description 717 "Configure the neighbor as a route reflector client."; 718 } 719 } 720 grouping bgp-neighbor-as-path-options_config { 721 description 722 "Configuration parameters allowing manipulation of the AS_PATH 723 attribute"; 724 leaf allow-own-as { 725 type uint8; 726 default 0; 727 description 728 "Specify the number of occurrences of the local BGP speaker's 729 AS that can occur within the AS_PATH before it is rejected."; 730 } 731 leaf replace-peer-as { 732 type boolean; 733 default "false"; 734 description 735 "Replace occurrences of the peer's AS in the AS_PATH 736 with the local autonomous system number"; 737 } 738 } 739 grouping bgp-neighbor-add-paths_config { 740 description 741 "Configuration parameters specfying whether the local system 742 will send or receive multiple paths using ADD_PATHS"; 743 leaf receive { 744 type boolean; 745 default false; 746 description 747 "Enable ability to receive multiple path advertisements 748 for an NLRI from the neighbor or group"; 749 } 750 leaf send-max { 751 type uint8; 752 description 753 "The maximum number of paths to advertise to neighbors 754 for a single NLRI"; 755 } 756 } 757 grouping bgp-neighbor-peer-group_config { 758 description 759 "Configuration parameters indicating whether the specified peer 760 is to be considered as part of a peer-group - and therefore 761 inherit its configuration"; 762 leaf peer-group { 763 type leafref { 764 // we are at /bgp/neighbors/neighbor/ 765 path "/bgp/peer-groups/peer-group/peer-group-name"; 766 require-instance true; 767 } 768 description 769 "The peer-group with which this neighbor is associated"; 770 } 771 } 772 grouping bgp-graceful-restart { 773 description 774 "Configures BGP graceful restart, which is a negotiated 775 option that indicates that a BGP speaker is able to retain 776 forwarding state when a BGP session restarts"; 777 reference "RFC 4724: Graceful Restart Mechanism for BGP"; 778 container graceful-restart { 779 description 780 "Parameters relating the graceful restart mechanism for BGP"; 781 container config { 782 description 783 "Configuration parameters relating to graceful-restart"; 784 uses bgp-neighbor-graceful-restart_config; 785 } 786 container state { 787 config false; 788 description 789 "State information associated with graceful-restart"; 790 uses bgp-neighbor-graceful-restart_config; 791 } 792 } 793 } 794 grouping bgp-neighbor-graceful-restart_config { 795 description 796 "Configuration parameters relating to BGP graceful restart."; 797 leaf enabled { 798 type boolean; 799 description 800 "Enable or disable the graceful-restart capability."; 801 } 802 leaf restart-time { 803 type uint16 { 804 range 0..4096; 805 } 806 description 807 "Estimated time (in seconds) for the local BGP speaker to 808 restart a session. This value is advertise in the graceful 809 restart BGP capability. This is a 12-bit value, referred to 810 as Restart Time in RFC4724. Per RFC4724, the suggested 811 default value is <= the hold-time value."; 812 } 813 leaf stale-routes-time { 814 type decimal64 { 815 fraction-digits 2; 817 } 818 description 819 "An upper-bound on the time thate stale routes will be 820 retained by a router after a session is restarted. If an 821 End-of-RIB (EOR) marker is received prior to this timer 822 expiring stale-routes will be flushed upon its receipt - if 823 no EOR is received, then when this timer expires stale paths 824 will be purged. This timer is referred to as the 825 Selection_Deferral_Timer in RFC4724"; 826 } 827 leaf helper-only { 828 type boolean; 829 description 830 "Enable graceful-restart in helper mode only. When this 831 leaf is set, the local system does not retain forwarding 832 its own state during a restart, but supports procedures 833 for the receiving speaker, as defined in RFC4724."; 834 } 835 } 836 // ************************************************************ 837 // * configuration context containers * 838 // ************************************************************ 839 grouping bgp-global-base { 840 description 841 "Global configuration parameters for the BGP router"; 842 container config { 843 description 844 "Configuration parameters relating to the global BGP router"; 845 uses bgp-global_config; 846 } 847 container state { 848 config false; 849 description 850 "State information relating to the global BGP router"; 851 uses bgp-global_config; 852 uses bgp-op:bgp-global_state; 853 } 854 uses bgp-mp:bgp-route-selection-options; 855 container default-route-distance { 856 description 857 "Administrative distance (or preference) assigned to 858 routes received from different sources 859 (external, internal, and local)."; 860 container config { 861 description 862 "Configuration parameters relating to the default route 863 distance"; 864 uses bgp-default-route-distance_config; 866 } 867 container state { 868 config false; 869 description 870 "State information relating to the default route distance"; 871 uses bgp-default-route-distance_config; 872 } 873 } 874 container confederation { 875 description 876 "Parameters indicating whether the local system acts as part 877 of a BGP confederation"; 878 container config { 879 description 880 "Configuration parameters relating to BGP confederations"; 881 uses bgp-confederation_config; 882 } 883 container state { 884 config false; 885 description 886 "State information relating to the BGP confederations"; 887 uses bgp-confederation_config; 888 } 889 } 890 uses bgp-mp:bgp-use-multiple-paths; 891 uses bgp-graceful-restart; 892 container afi-safis { 893 description 894 "Address family specific configuration"; 895 uses bgp-mp:bgp-common-afi-safi-list; 896 } 897 } 898 grouping bgp-neighbors { 899 description 900 "BGP neighbors configured on the local system"; 901 list neighbor { 902 key "neighbor-address"; 903 description 904 "List of BGP neighbors configured on the local system, 905 uniquely identified by peer IPv[46] address"; 906 leaf neighbor-address { 907 type leafref { 908 path "../config/neighbor-address"; 909 } 910 description 911 "Reference to the address of the BGP neighbor used as 912 a key in the neighbor list"; 913 } 914 uses bgp-neighbor-group; 915 } 916 } 917 grouping bgp-peer-group { 918 description 919 "BGP peer-groups configured on the local system"; 920 list peer-group { 921 key "peer-group-name"; 922 description 923 "List of BGP peer-groups configured on the local system - 924 uniquely identified by peer-group name"; 925 leaf peer-group-name { 926 type leafref { 927 path "../config/peer-group-name"; 928 } 929 description 930 "Reference to the name of the BGP peer-group used as a 931 key in the peer-group list"; 932 } 933 uses bgp-neighbor-group; 934 } 935 } 936 grouping bgp-neighbor-group { 937 description 938 "Parameters related to a BGP neighbor or group"; 939 container config { 940 description 941 "Configuration parameters relating to the BGP neighbor or 942 group"; 943 uses bgp-neighbor_config; 944 } 945 container state { 946 config false; 947 description 948 "State information relating to the BGP neighbor or group"; 949 uses bgp-neighbor_config; 950 } 951 container timers { 952 description 953 "Timers related to a BGP neighbor or group"; 954 container config { 955 description 956 "Configuration parameters relating to timers used for the 957 BGP neighbor or group"; 958 uses bgp-neighbor-timers_config; 959 } 960 container state { 961 config false; 962 description 963 "State information relating to the timers used for the BGP 964 neighbor or group"; 965 uses bgp-neighbor-timers_config; 966 } 967 } 968 container transport { 969 description 970 "Transport session parameters for the BGP neighbor or group"; 971 container config { 972 description 973 "Configuration parameters relating to the transport 974 session(s) used for the BGP neighbor or group"; 975 uses bgp-neighbor-transport_config; 976 } 977 container state { 978 config false; 979 description 980 "State information relating to the transport session(s) 981 used for the BGP neighbor or group"; 982 uses bgp-neighbor-transport_config; 983 } 984 } 985 container error-handling { 986 description 987 "Error handling parameters used for the BGP neighbor or 988 group"; 989 container config { 990 description 991 "Configuration parameters enabling or modifying the 992 behavior or enhanced error handling mechanisms for the BGP 993 neighbor or group"; 994 uses bgp-neighbor-error-handling_config; 995 } 996 container state { 997 config false; 998 description 999 "State information relating to enhanced error handling 1000 mechanisms for the BGP neighbor or group"; 1001 uses bgp-neighbor-error-handling_config; 1002 } 1003 } 1004 container logging-options { 1005 description 1006 "Logging options for events related to the BGP neighbor or 1007 group"; 1008 container config { 1009 description 1010 "Configuration parameters enabling or modifying logging 1011 for events relating to the BGP neighbor or group"; 1012 uses bgp-neighbor-logging-options_config; 1013 } 1014 container state { 1015 config false; 1016 description 1017 "State information relating to logging for the BGP neighbor 1018 or group"; 1019 uses bgp-neighbor-logging-options_config; 1020 } 1021 } 1022 container ebgp-multihop { 1023 description 1024 "eBGP multi-hop parameters for the BGP neighbor or group"; 1025 container config { 1026 description 1027 "Configuration parameters relating to eBGP multihop for the 1028 BGP neighbor or group"; 1029 uses bgp-neighbor-multihop_config; 1030 } 1031 container state { 1032 config false; 1033 description 1034 "State information for eBGP multihop, for the BGP neighbor 1035 or group"; 1036 uses bgp-neighbor-multihop_config; 1037 } 1038 } 1039 container route-reflector { 1040 description 1041 "Route reflector parameters for the BGP neighbor or group"; 1042 container config { 1043 description 1044 "Configuraton parameters relating to route reflection 1045 for the BGP neighbor or group"; 1046 uses bgp-neighbor-route-reflector_config; 1047 } 1048 container state { 1049 config false; 1050 description 1051 "State information relating to route reflection for the 1052 BGP neighbor or group"; 1053 uses bgp-neighbor-route-reflector_config; 1054 } 1055 } 1056 container as-path-options { 1057 description 1058 "AS_PATH manipulation parameters for the BGP neighbor or 1059 group"; 1060 container config { 1061 description 1062 "Configuration parameters relating to AS_PATH manipulation 1063 for the BGP peer or group"; 1064 uses bgp-neighbor-as-path-options_config; 1065 } 1066 container state { 1067 config false; 1068 description 1069 "State information relating to the AS_PATH manipulation 1070 mechanisms for the BGP peer or group"; 1071 uses bgp-neighbor-as-path-options_config; 1072 } 1073 } 1074 container add-paths { 1075 description 1076 "Parameters relating to the advertisement and receipt of 1077 multiple paths for a single NLRI (add-paths)"; 1078 container config { 1079 description 1080 "Configuration parameters relating to ADD_PATHS"; 1081 uses bgp-neighbor-add-paths_config; 1082 } 1083 container state { 1084 config false; 1085 description 1086 "State information associated with ADD_PATHS"; 1087 uses bgp-neighbor-add-paths_config; 1088 } 1089 } 1090 container afi-safis { 1091 description 1092 "Per-address-family configuration parameters associated with 1093 the neighbor or group"; 1094 uses bgp-mp:bgp-common-afi-safi-list; 1095 } 1096 uses bgp-graceful-restart; 1097 uses rpol:apply-policy-group; 1098 } 1099 grouping bgp-neighbor-neighbor-address_config { 1100 description 1101 "Configuration options relating to the BGP neighbor address"; 1102 leaf neighbor-address { 1103 type inet:ip-address; 1104 description 1105 "Address of the BGP peer, either in IPv4 or IPv6"; 1107 } 1108 } 1109 grouping bgp-peer-group-peer-group-name_config { 1110 description 1111 "Configuration options relating to the BGP peer-group name"; 1112 leaf peer-group-name { 1113 type string; 1114 description 1115 "Name of the BGP peer-group"; 1116 } 1117 } 1118 // add peer-group pointer only for the neighbor list 1119 augment /bgp/neighbors/neighbor/config { 1120 description 1121 "Augmentation to allow association of a neighbor with a 1122 peer-group"; 1123 uses bgp-neighbor-peer-group_config; 1124 } 1125 augment /bgp/neighbors/neighbor/state { 1126 description 1127 "Augmentation to reflect the association of a neighbor with a 1128 peer-group"; 1129 uses bgp-neighbor-peer-group_config; 1130 } 1131 augment /bgp/peer-groups/peer-group { 1132 description 1133 "Augmentation to add multipath configuration to a peer-group"; 1134 uses bgp-mp:bgp-use-multiple-paths; 1135 } 1136 augment /bgp/neighbors/neighbor { 1137 description 1138 "Augmentation to add the multipath configuration to a 1139 neighbor"; 1140 uses bgp-mp:bgp-use-multiple-paths-neighbor; 1141 } 1142 augment /bgp/peer-groups/peer-group/afi-safis/afi-safi { 1143 description 1144 "Augmentation to add multipath configuration to a peer-group 1145 on a per-AFI-SAFI basis"; 1146 uses bgp-mp:bgp-use-multiple-paths; 1147 } 1148 augment /bgp/neighbors/neighbor/afi-safis/afi-safi { 1149 description 1150 "Augmentation to add multipath configuration to a neighbor 1151 on a per-AFI-SAFI basis"; 1152 uses bgp-mp:bgp-use-multiple-paths-neighbor; 1153 } 1154 augment /bgp/global/afi-safis/afi-safi { 1155 description 1156 "Augmentation to add global instance specific AFI-SAFI 1157 configuration information"; 1158 uses bgp-mp:bgp-global-afi-safi; 1159 uses bgp-mp:bgp-use-multiple-paths; 1160 } 1161 augment /bgp/peer-groups/peer-group/afi-safis/afi-safi { 1162 description 1163 "Augmentation that adds peer-group instance specific 1164 AFI-SAFI configuration information"; 1165 uses bgp-mp:bgp-group-afi-safi; 1166 } 1167 augment /bgp/neighbors/neighbor/config { 1168 description 1169 "Augmentation adding the neighbor address to the 1170 neighbor configuration container"; 1171 uses bgp-neighbor-neighbor-address_config; 1172 } 1173 augment /bgp/neighbors/neighbor/state { 1174 description 1175 "Augmentation adding the neighbor address to the 1176 neighbor state container"; 1177 uses bgp-neighbor-neighbor-address_config; 1178 } 1179 augment /bgp/peer-groups/peer-group/config { 1180 description 1181 "Augmentation adding the peer-group name to the 1182 peer-group configuration container"; 1183 uses bgp-peer-group-peer-group-name_config; 1184 } 1185 augment /bgp/peer-groups/peer-group/state { 1186 description 1187 "Augmentation adding the peer-group name to the 1188 peer-group state container"; 1189 uses bgp-peer-group-peer-group-name_config; 1190 } 1191 // ************************************************************ 1192 // * Augmentations to add state * 1193 // * (rjs: cleaner to have these in the base module to avoid * 1194 // needing to specify which module - e.g. augment of * 1195 // /bgp:bgp/bgp:neighbors/bgp:neighbor...) * 1196 // ************************************************************ 1197 augment /bgp/neighbors/neighbor/state { 1198 description 1199 "Augmentation to add operational state related to a particular 1200 BGP neighbor"; 1201 uses bgp-op:bgp-neighbor_state; 1202 } 1203 augment /bgp/neighbors/bgp:neighbor/state { 1204 description 1205 "Augmentation to add operational state related to a particular 1206 BGP neighbor"; 1207 container messages { 1208 description 1209 "Counters for BGP messages sent and received from the 1210 neighbor"; 1211 container sent { 1212 description 1213 "Counters relating to BGP messages sent to the neighbor"; 1214 uses bgp-op:bgp-neighbor-message-counters-sent_state; 1215 } 1216 container received { 1217 description 1218 "Counters for BGP messages received from the neighbor"; 1219 uses bgp-op:bgp-neighbor-message-counters-received_state; 1220 } 1221 } 1222 container queues { 1223 description 1224 "Counters related to queued messages associated with the 1225 BGP neighbor"; 1226 uses bgp-op:bgp-neighbor-queue-counters_state; 1227 } 1228 } 1229 augment /bgp:bgp/bgp:neighbors/neighbor/timers/state { 1230 description 1231 "Augmentation to add the operational state of timers associated 1232 with the BGP neighbor"; 1233 uses bgp-op:bgp-neighbor-timers_state; 1234 } 1235 augment /bgp/neighbors/neighbor/transport/state { 1236 description 1237 "Augmentation to add the operational state of the transport 1238 session associated with the BGP neighbor"; 1239 uses bgp-op:bgp-neighbor-transport_state; 1240 } 1241 augment /bgp/neighbors/neighbor/error-handling/state { 1242 description 1243 "Augmentation to add the operational state of the error 1244 handling associated with the BGP neighbor"; 1245 uses bgp-op:bgp-neighbor-error-handling_state; 1246 } 1247 augment /bgp/neighbors/neighbor/graceful-restart/state { 1248 description 1249 "Augmentation to add the operational state of graceful-restart 1250 associated with a BGP neighbor"; 1252 uses bgp-op:bgp-afi-safi-graceful-restart_state; 1253 } 1254 augment /bgp/peer-groups/peer-group/state { 1255 description 1256 "Augmentation to add the operational state and counters 1257 relating to a BGP peer-group"; 1258 uses bgp-op:bgp-peer-group_state; 1259 } 1260 augment /bgp/global/afi-safis/afi-safi/state { 1261 description 1262 "Augmentation to add operational state and counters 1263 on a per-AFI-SAFI basis to the global BGP router"; 1264 uses bgp-op:bgp-global-afi-safi_state; 1265 } 1266 augment /bgp/neighbors/neighbor/afi-safis/afi-safi/state { 1267 description 1268 "Augmentation to add per-AFI-SAFI operational state 1269 and counters to the BGP neighbor"; 1270 uses bgp-op:bgp-neighbor-afi-safi_state; 1271 } 1272 augment "/bgp/neighbors/neighbor/afi-safis/afi-safi/" + 1273 "graceful-restart/state" { 1274 description 1275 "Augmentation to add per-AFI-SAFI operational state for BGP 1276 graceful-restart"; 1277 uses bgp-op:bgp-neighbor-afi-safi-graceful-restart_state; 1278 } 1279 // ************************************************************ 1280 // * module structure containers * 1281 // ************************************************************ 1282 container bgp { 1283 presence "Container for BGP protocol hierarchy"; 1284 description 1285 "Top-level configuration and state for the BGP router"; 1286 container global { 1287 description 1288 "Global configuration for the BGP router"; 1289 uses bgp-global-base; 1290 uses rpol:apply-policy-group; 1291 } 1292 container neighbors { 1293 description 1294 "Configuration for BGP neighbors"; 1295 uses bgp-neighbors; 1296 } 1297 container peer-groups { 1298 description 1299 "Configuration for BGP peer-groups"; 1301 uses bgp-peer-group; 1302 } 1303 } 1304 } 1305 1307 6.2. BGP base types 1309 file "ietf-bgp-types.yang" 1310 module ietf-bgp-types { 1311 yang-version "1"; 1312 namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-types"; 1313 prefix "bgp-types"; 1314 import ietf-inet-types { prefix inet; } 1315 // meta 1316 organization 1317 "OpenConfig working group"; 1318 contact 1319 "OpenConfig working group 1320 netopenconfig@googlegroups.com"; 1321 description 1322 "This module contains general data definitions for use in BGP 1323 policy. It can be imported by modules that make use of BGP 1324 attributes"; 1325 revision "2016-01-06" { 1326 description 1327 "Updated filename and namespace"; 1328 reference "TBD"; 1329 } 1330 identity bgp-capability { 1331 description "Base identity for a BGP capability"; 1332 } 1333 identity MPBGP { 1334 base "bgp-capability"; 1335 description 1336 "Multi-protocol extensions to BGP"; 1337 reference "RFC2858"; 1338 } 1339 identity ROUTE-REFRESH { 1340 base "bgp-capability"; 1341 description 1342 "The BGP route-refresh functionality"; 1343 reference "RFC2918"; 1344 } 1345 identity ASN32 { 1346 base "bgp-capability"; 1347 description 1348 "4-byte (32-bit) AS number functionality"; 1349 reference "RFC6793"; 1350 } 1351 identity GRACEFUL-RESTART { 1352 base "bgp-capability"; 1353 description 1354 "Graceful restart functionality"; 1355 reference "RFC4724"; 1356 } 1357 identity ADD-PATHS { 1358 base "bgp-capability"; 1359 description 1360 "BGP add-paths"; 1361 reference "draft-ietf-idr-add-paths"; 1362 } 1363 identity afi-safi-type { 1364 description 1365 "Base identity type for AFI,SAFI tuples for BGP-4"; 1366 reference "RFC4760 - multiprotocol extensions for BGP-4"; 1367 } 1368 identity ipv4-unicast { 1369 base afi-safi-type; 1370 description 1371 "IPv4 unicast (AFI,SAFI = 1,1)"; 1372 reference "RFC4760"; 1373 } 1374 identity ipv6-unicast { 1375 base afi-safi-type; 1376 description 1377 "IPv6 unicast (AFI,SAFI = 2,1)"; 1378 reference "RFC4760"; 1379 } 1380 identity ipv4-labelled-unicast { 1381 base afi-safi-type; 1382 description 1383 "Labelled IPv4 unicast (AFI,SAFI = 1,4)"; 1384 reference "RFC3107"; 1385 } 1386 identity ipv6-labelled-unicast { 1387 base afi-safi-type; 1388 description 1389 "Labelled IPv6 unicast (AFI,SAFI = 2,4)"; 1390 reference "RFC3107"; 1391 } 1392 identity l3vpn-ipv4-unicast { 1393 base afi-safi-type; 1394 description 1395 "Unicast IPv4 MPLS L3VPN (AFI,SAFI = 1,128)"; 1397 reference "RFC4364"; 1398 } 1399 identity l3vpn-ipv6-unicast { 1400 base afi-safi-type; 1401 description 1402 "Unicast IPv6 MPLS L3VPN (AFI,SAFI = 2,128)"; 1403 reference "RFC4659"; 1404 } 1405 identity l3vpn-ipv4-multicast { 1406 base afi-safi-type; 1407 description 1408 "Multicast IPv4 MPLS L3VPN (AFI,SAFI = 1,129)"; 1409 reference "RFC6514"; 1410 } 1411 identity l3vpn-ipv6-multicast { 1412 base afi-safi-type; 1413 description 1414 "Multicast IPv6 MPLS L3VPN (AFI,SAFI = 2,129)"; 1415 reference "RFC6514"; 1416 } 1417 identity l2vpn-vpls { 1418 base afi-safi-type; 1419 description 1420 "BGP-signalled VPLS (AFI,SAFI = 25,65)"; 1421 reference "RFC4761"; 1422 } 1423 identity l2vpn-evpn { 1424 base afi-safi-type; 1425 description 1426 "BGP MPLS Based Ethernet VPN (AFI,SAFI = 25,70)"; 1427 } 1428 identity bgp-well-known-std-community { 1429 description 1430 "Reserved communities within the standard community space 1431 defined by RFC1997. These communities must fall within the 1432 range 0x00000000 to 0xFFFFFFFF"; 1433 reference "RFC1997"; 1434 } 1435 identity NO_EXPORT { 1436 base bgp-well-known-std-community; 1437 description 1438 "Do not export NLRI received carrying this community outside 1439 the bounds of this autonomous system, or this confederation if 1440 the local autonomous system is a confederation member AS. This 1441 community has a value of 0xFFFFFF01."; 1442 reference "RFC1997"; 1443 } 1444 identity NO_ADVERTISE { 1445 base bgp-well-known-std-community; 1446 description 1447 "All NLRI received carrying this community must not be 1448 advertised to other BGP peers. This community has a value of 1449 0xFFFFFF02."; 1450 reference "RFC1997"; 1451 } 1452 identity NO_EXPORT_SUBCONFED { 1453 base bgp-well-known-std-community; 1454 description 1455 "All NLRI received carrying this community must not be 1456 advertised to external BGP peers - including over confederation 1457 sub-AS boundaries. This community has a value of 0xFFFFFF03."; 1458 reference "RFC1997"; 1459 } 1460 identity NOPEER { 1461 base bgp-well-known-std-community; 1462 description 1463 "An autonomous system receiving NLRI tagged with this community 1464 is advised not to readvertise the NLRI to external bi-lateral 1465 peer autonomous systems. An AS may also filter received NLRI 1466 from bilateral peer sessions when they are tagged with this 1467 community value"; 1468 reference "RFC3765"; 1469 } 1470 identity INTERNET { 1471 base bgp-well-known-std-community; 1472 description 1473 "A community used by some implementations with the value 0:0 1474 which represents all possible community values."; 1475 } 1476 typedef bgp-session-direction { 1477 type enumeration { 1478 enum INBOUND { 1479 description 1480 "Refers to all NLRI received from the BGP peer"; 1481 } 1482 enum OUTBOUND { 1483 description 1484 "Refers to all NLRI advertised to the BGP peer"; 1485 } 1486 } 1487 description 1488 "Type to describe the direction of NLRI transmission"; 1489 } 1490 typedef bgp-well-known-community-type { 1491 type identityref { 1492 base bgp-well-known-std-community; 1494 } 1495 description 1496 "Type definition for well-known IETF community attribute 1497 values"; 1498 reference 1499 "IANA Border Gateway Protocol (BGP) Well Known Communities"; 1500 } 1501 typedef bgp-std-community-type { 1502 // TODO: further refine restrictions and allowed patterns 1503 // 4-octet value: 1504 // 2 octets 1505 // 2 octets 1506 type union { 1507 type uint32 { 1508 // per RFC 1997, 0x00000000 - 0x0000FFFF and 0xFFFF0000 - 1509 // 0xFFFFFFFF are reserved 1510 range "65536..4294901759"; // 0x00010000..0xFFFEFFFF 1511 } 1512 type string { 1513 pattern '([0-9]+:[0-9]+)'; 1514 } 1515 } 1516 description 1517 "Type definition for standard commmunity attributes"; 1518 reference "RFC 1997 - BGP Communities Attribute"; 1519 } 1520 typedef bgp-ext-community-type { 1521 // TODO: needs more work to make this more precise given the 1522 // variability of extended community attribute specifications 1523 // 8-octet value: 1524 // 2 octects 1525 // 6 octets 1526 type string { 1527 pattern '([0-9\.]+(:[0-9]+)?:[0-9]+)'; 1528 } 1529 description 1530 "Type definition for extended community attributes"; 1531 reference "RFC 4360 - BGP Extended Communities Attribute"; 1532 } 1533 typedef bgp-community-regexp-type { 1534 // TODO: needs more work to decide what format these regexps can 1535 // take. 1536 type string; 1537 description 1538 "Type definition for communities specified as regular 1539 expression patterns"; 1540 } 1541 typedef bgp-origin-attr-type { 1542 type enumeration { 1543 enum IGP { 1544 description "Origin of the NLRI is internal"; 1545 } 1546 enum EGP { 1547 description "Origin of the NLRI is EGP"; 1548 } 1549 enum INCOMPLETE { 1550 description "Origin of the NLRI is neither IGP or EGP"; 1551 } 1552 } 1553 description 1554 "Type definition for standard BGP origin attribute"; 1555 reference "RFC 4271 - A Border Gateway Protocol 4 (BGP-4), 1556 Sec 4.3"; 1557 } 1558 typedef peer-type { 1559 type enumeration { 1560 enum INTERNAL { 1561 description "internal (iBGP) peer"; 1562 } 1563 enum EXTERNAL { 1564 description "external (eBGP) peer"; 1565 } 1566 } 1567 description 1568 "labels a peer or peer group as explicitly internal or 1569 external"; 1570 } 1571 typedef remove-private-as-option { 1572 type enumeration { 1573 enum ALL { 1574 description "remove all private ASes in the path"; 1575 } 1576 enum REPLACE { 1577 description "replace private ASes with local AS"; 1578 } 1579 } 1580 description 1581 "set of options for configuring how private AS path numbers 1582 are removed from advertisements"; 1583 } 1584 typedef percentage { 1585 type uint8 { 1586 range "0..100"; 1587 } 1588 description 1589 "Integer indicating a percentage value"; 1591 } 1592 typedef rr-cluster-id-type { 1593 type union { 1594 type uint32; 1595 type inet:ipv4-address; 1596 } 1597 description 1598 "union type for route reflector cluster ids: 1599 option 1: 4-byte number 1600 option 2: IP address"; 1601 } 1602 typedef community-type { 1603 type enumeration { 1604 enum STANDARD { 1605 description "send only standard communities"; 1606 } 1607 enum EXTENDED { 1608 description "send only extended communities"; 1609 } 1610 enum BOTH { 1611 description "send both standard and extended communities"; 1612 } 1613 enum NONE { 1614 description "do not send any community attribute"; 1615 } 1616 } 1617 description 1618 "type describing variations of community attributes: 1619 STANDARD: standard BGP community [rfc1997] 1620 EXTENDED: extended BGP community [rfc4360] 1621 BOTH: both standard and extended community"; 1622 } 1623 } 1624 1626 6.3. BGP policy items 1628 file "ietf-bgp-policy.yang" 1629 module ietf-bgp-policy { 1630 yang-version "1"; 1631 // namespace 1632 namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-policy"; 1633 prefix "bgp-pol"; 1634 // import some basic types 1635 import ietf-inet-types { prefix inet; } 1636 import ietf-routing-policy {prefix rpol; } 1637 import ietf-policy-types { prefix pt; } 1638 import ietf-bgp-types { prefix bgp-types; } 1639 // meta 1640 organization 1641 "OpenConfig working group"; 1642 contact 1643 "OpenConfig working group 1644 netopenconfig@googlegroups.com"; 1645 description 1646 "This module contains data definitions for BGP routing policy. 1647 It augments the base routing-policy module with BGP-specific 1648 options for conditions and actions."; 1649 revision "2016-01-06" { 1650 description 1651 "Updated filename and namespace"; 1652 reference "TBD"; 1653 } 1654 // extension statements 1655 // feature statements 1656 // identity statements 1657 // typedef statements 1658 typedef bgp-as-path-prepend-repeat { 1659 type uint8; 1660 description 1661 "Option for the BGP as-prepend policy action. Prepends the 1662 local AS number repeated n times"; 1663 } 1664 typedef bgp-set-community-option-type { 1665 type enumeration { 1666 enum ADD { 1667 description 1668 "add the specified communities to the existing 1669 community attribute"; 1670 } 1671 enum REMOVE { 1672 description 1673 "remove the specified communities from the 1674 existing community attribute"; 1675 } 1676 enum REPLACE { 1677 description 1678 "replace the existing community attribute with 1679 the specified communities. If an empty set is 1680 specified, this removes the community attribute 1681 from the route."; 1682 } 1683 } 1684 description 1685 "Type definition for options when setting the community 1686 attribute in a policy action"; 1687 } 1688 typedef bgp-next-hop-type { 1689 type union { 1690 type inet:ip-address; 1691 type enumeration { 1692 enum SELF { 1693 description "special designation for local router's own 1694 address, i.e., next-hop-self"; 1695 } 1696 } 1697 } 1698 description 1699 "type definition for specifying next-hop in policy actions"; 1700 } 1701 typedef bgp-set-med-type { 1702 type union { 1703 type uint32; 1704 type string { 1705 pattern "^[+-][0-9]+"; 1706 } 1707 type enumeration { 1708 enum IGP { 1709 description "set the MED value to the IGP cost toward the 1710 next hop for the route"; 1711 } 1712 } 1713 } 1714 description 1715 "Type definition for specifying how the BGP MED can 1716 be set in BGP policy actions. The three choices are to set 1717 the MED directly, increment/decrement using +/- notation, 1718 and setting it to the IGP cost (predefined value)."; 1719 } 1720 // grouping statements 1721 grouping bgp-match-conditions { 1722 description 1723 "Condition statement definitions for checking membership in a 1724 defined set"; 1725 container match-community-set { 1726 presence 1727 "The presence of this container indicates that the routes 1728 should match the referenced community-set"; 1729 description 1730 "Match a referenced community-set according to the logic 1731 defined in the match-set-options leaf"; 1732 leaf community-set { 1733 type leafref { 1734 path "/rpol:routing-policy/rpol:defined-sets/" + 1735 "bgp-pol:bgp-defined-sets/bgp-pol:community-sets/" + 1736 "bgp-pol:community-set/bgp-pol:community-set-name"; 1737 require-instance true; 1738 } 1739 description 1740 "References a defined community set"; 1741 } 1742 uses rpol:match-set-options-group; 1743 } 1744 container match-ext-community-set { 1745 presence 1746 "The presence of this container indicates that the routes 1747 should match the referenced extended community set"; 1748 description 1749 "Match a referenced extended community-set according to the 1750 logic defined in the match-set-options leaf"; 1751 leaf ext-community-set { 1752 type leafref { 1753 path "/rpol:routing-policy/rpol:defined-sets/" + 1754 "bgp-pol:bgp-defined-sets/bgp-pol:ext-community-sets/" + 1755 "bgp-pol:ext-community-set/" + 1756 "bgp-pol:ext-community-set-name"; 1757 require-instance true; 1758 } 1759 description "References a defined extended community set"; 1760 } 1761 uses rpol:match-set-options-group; 1762 } 1763 container match-as-path-set { 1764 presence 1765 "The presence of this container indicates that the route 1766 should match the referenced as-path set"; 1767 description 1768 "Match a referenced as-path set according to the logic 1769 defined in the match-set-options leaf"; 1770 leaf as-path-set { 1771 type leafref { 1772 path "/rpol:routing-policy/rpol:defined-sets/" + 1773 "bgp-pol:bgp-defined-sets/bgp-pol:as-path-sets/" + 1774 "bgp-pol:as-path-set/bgp-pol:as-path-set-name"; 1775 require-instance true; 1776 } 1777 description "References a defined AS path set"; 1778 } 1779 uses rpol:match-set-options-group; 1780 } 1781 } 1782 grouping bgp-attribute-conditions { 1783 description 1784 "Condition statement definitions for comparing a BGP route 1785 attribute to a specified value"; 1786 leaf med-eq { 1787 type uint32; 1788 description 1789 "Condition to check if the received MED value is equal to 1790 the specified value"; 1791 } 1792 leaf origin-eq { 1793 type bgp-types:bgp-origin-attr-type; 1794 description 1795 "Condition to check if the route origin is equal to the 1796 specified value"; 1797 } 1798 leaf-list next-hop-in { 1799 type inet:ip-address; 1800 description 1801 "List of next hop addresses to check for in the route 1802 update"; 1803 } 1804 leaf local-pref-eq { 1805 type uint32; 1806 // TODO: add support for other comparisons if needed 1807 description 1808 "Condition to check if the local pref attribute is equal to 1809 the specified value"; 1810 } 1811 container community-count { 1812 presence "node is present in the config data to indicate a 1813 community-count condition"; 1814 description 1815 "Value and comparison operations for conditions based on the 1816 number of communities in the route update"; 1817 uses pt:attribute-compare-operators; 1818 } 1819 container as-path-length { 1820 presence "node is present in the config data to indicate a 1821 as-path-length condition"; 1822 description 1823 "Value and comparison operations for conditions based on the 1824 length of the AS path in the route update"; 1825 uses pt:attribute-compare-operators; 1826 } 1827 leaf route-type { 1828 // TODO: verify extent of vendor support for this comparison 1829 type enumeration { 1830 enum INTERNAL { 1831 description "route type is internal"; 1832 } 1833 enum EXTERNAL { 1834 description "route type is external"; 1835 } 1836 } 1837 description 1838 "Condition to check the route type in the route update"; 1839 } 1840 } 1841 // augment statements 1842 augment "/rpol:routing-policy/rpol:defined-sets" { 1843 description "adds BGP defined sets container to routing policy 1844 model"; 1845 container bgp-defined-sets { 1846 description 1847 "BGP-related set definitions for policy match conditions"; 1848 container community-sets { 1849 description 1850 "Enclosing container for community sets"; 1851 list community-set { 1852 key community-set-name; 1853 description 1854 "Definitions for community sets"; 1855 leaf community-set-name { 1856 type string; 1857 mandatory true; 1858 description 1859 "name / label of the community set -- this is used to 1860 reference the set in match conditions"; 1861 } 1862 leaf-list community-member { 1863 type union { 1864 type bgp-types:bgp-std-community-type; 1865 type bgp-types:bgp-community-regexp-type; 1866 type bgp-types:bgp-well-known-community-type; 1867 } 1868 description 1869 "members of the community set"; 1870 } 1871 } 1872 } 1873 container ext-community-sets { 1874 description 1875 "Enclosing container for extended community sets"; 1876 list ext-community-set { 1877 key ext-community-set-name; 1878 description 1879 "Definitions for extended community sets"; 1880 leaf ext-community-set-name { 1881 type string; 1882 description 1883 "name / label of the extended community set -- this is 1884 used to reference the set in match conditions"; 1885 } 1886 leaf-list ext-community-member { 1887 type union { 1888 type bgp-types:bgp-ext-community-type; 1889 // TODO: is regexp support needed for extended 1890 // communities? 1891 type bgp-types:bgp-community-regexp-type; 1892 } 1893 description 1894 "members of the extended community set"; 1895 } 1896 } 1897 } 1898 container as-path-sets { 1899 description 1900 "Enclosing container for AS path sets"; 1901 list as-path-set { 1902 key as-path-set-name; 1903 description 1904 "Definitions for AS path sets"; 1905 leaf as-path-set-name { 1906 type string; 1907 description 1908 "name of the AS path set -- this is used to reference 1909 the set in match conditions"; 1910 } 1911 leaf-list as-path-set-member { 1912 // TODO: need to refine typedef for AS path expressions 1913 type string; 1914 description 1915 "AS path expression -- list of ASes in the set"; 1916 } 1917 } 1918 } 1919 } 1920 } 1921 augment "/rpol:routing-policy/rpol:policy-definitions/" + 1922 "rpol:policy-definition/rpol:statements/rpol:statement/" + 1923 "rpol:conditions" { 1924 description "BGP policy conditions added to routing policy 1925 module"; 1926 container bgp-conditions { 1927 description "Policy conditions for matching 1928 BGP-specific defined sets or comparing BGP-specific 1929 attributes"; 1930 uses bgp-match-conditions; 1931 uses bgp-attribute-conditions; 1932 } 1933 } 1934 augment "/rpol:routing-policy/rpol:policy-definitions/" + 1935 "rpol:policy-definition/rpol:statements/rpol:statement/" + 1936 "rpol:actions" { 1937 description "BGP policy actions added to routing policy 1938 module"; 1939 container bgp-actions { 1940 description 1941 "Definitions for policy action statements that 1942 change BGP-specific attributes of the route"; 1943 container set-as-path-prepend { 1944 presence "node is present in the config data to use the AS 1945 prepend action"; 1946 description 1947 "action to prepend local AS number to the AS-path a 1948 specified number of times"; 1949 leaf repeat-n { 1950 type uint8; 1951 description "number of times to prepend the local AS 1952 number"; 1953 } 1954 } 1955 container set-community { 1956 presence "node is present in the config data when 1957 set-community action is used"; 1958 description 1959 "action to set the community attributes of the route, along 1960 with options to modify how the community is modified"; 1961 choice set-community-method { 1962 description 1963 "Option to set communities using an inline list or 1964 reference to an existing defined set."; 1965 case inline { 1966 leaf-list communities { 1967 type union { 1968 type bgp-types:bgp-std-community-type; 1969 type bgp-types:bgp-well-known-community-type; 1970 } 1971 description 1972 "Set the community values for the update inline with 1973 a list."; 1975 } 1976 } 1977 case reference { 1978 leaf community-set-ref { 1979 type leafref { 1980 path "/rpol:routing-policy/rpol:defined-sets/" + 1981 "bgp-pol:bgp-defined-sets/" + 1982 "bgp-pol:community-sets/bgp-pol:community-set/" + 1983 "bgp-pol:community-set-name"; 1984 require-instance true; 1985 } 1986 description 1987 "References a defined community set by name"; 1988 } 1989 } 1990 } 1991 leaf options { 1992 type bgp-set-community-option-type; 1993 description 1994 "Options for modifying the community attribute with 1995 the specified values. These options apply to both 1996 methods of setting the community attribute."; 1997 } 1998 } 1999 container set-ext-community { 2000 presence "node is present in the config data when 2001 set-community action is used"; 2002 description 2003 "Action to set the extended community attributes of the 2004 route, along with options to modify how the community is 2005 modified"; 2006 choice set-ext-community-method { 2007 description 2008 "Option to set communities using an inline list or 2009 reference to an existing defined set."; 2010 case inline { 2011 leaf-list communities { 2012 type union { 2013 type bgp-types:bgp-ext-community-type; 2014 type bgp-types:bgp-well-known-community-type; 2015 } 2016 description 2017 "Set the community values for the update inline with 2018 a list."; 2019 } 2020 } 2021 case reference { 2022 leaf ext-community-set-ref { 2023 type leafref { 2024 path "/rpol:routing-policy/rpol:defined-sets/" + 2025 "bgp-pol:bgp-defined-sets/" + 2026 "bgp-pol:ext-community-sets/" + 2027 "bgp-pol:ext-community-set/" + 2028 "bgp-pol:ext-community-set-name"; 2029 require-instance true; 2030 } 2031 description 2032 "References a defined extended community set by 2033 name"; 2034 } 2035 } 2036 } 2037 leaf options { 2038 type bgp-set-community-option-type; 2039 description 2040 "options for modifying the extended community 2041 attribute with the specified values. These options 2042 apply to both methods of setting the community 2043 attribute."; 2044 } 2045 } 2046 leaf set-route-origin { 2047 type bgp-types:bgp-origin-attr-type; 2048 description "set the origin attribute to the specified 2049 value"; 2050 } 2051 leaf set-local-pref { 2052 type uint32; 2053 description "set the local pref attribute on the route 2054 update"; 2055 } 2056 leaf set-next-hop { 2057 type bgp-next-hop-type; 2058 description "set the next-hop attribute in the route update"; 2059 } 2060 leaf set-med { 2061 type bgp-set-med-type; 2062 description "set the med metric attribute in the route 2063 update"; 2064 } 2065 } 2066 } 2067 // rpc statements 2068 // notification statements 2069 } 2070 2072 6.4. BGP multiprotocol items 2074 file "ietf-bgp-multiprotocol.yang" 2075 module ietf-bgp-multiprotocol { 2076 yang-version "1"; 2077 // namespace 2078 namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-multiprotocol"; 2079 prefix "bgp-mp"; 2080 // import some basic inet types 2081 import ietf-routing-policy { prefix rpol; } 2082 import ietf-bgp-types { prefix bgp-types; } 2083 import ietf-bgp-operational { prefix bgp-op; } 2084 // meta 2085 organization 2086 "OpenConfig working group"; 2087 contact 2088 "OpenConfig working group 2089 netopenconfig@googlegroups.com"; 2090 description 2091 "This module is part of a YANG model for BGP protocol 2092 configuration, focusing on configuration of multiprotocol 2093 BGP, in particular various relevant address families (AFI) and 2094 sub-address families (SAFI). 2095 Identities (rather than enumerated types) are used to identify 2096 each AFI / SAFI type to make it easier for users to extend to 2097 pre-standard or custom AFI/SAFI types. This module is only 2098 intended to capture the most"; 2099 revision "2016-01-06" { 2100 description 2101 "Updated filename and namespace"; 2102 reference "TBD"; 2103 } 2104 grouping ipv4-unicast-group { 2105 description 2106 "Group for IPv4 Unicast configuration options"; 2107 container ipv4-unicast { 2108 when "../afi-safi-name = 'bgp-mp:ipv4-unicast'" { 2109 description 2110 "Include this container for IPv4 Unicast specific 2111 configuration"; 2112 } 2113 description "IPv4 unicast configuration options"; 2114 // include common IPv[46] unicast options 2115 uses ipv4-ipv6-unicast-common; 2116 // placeholder for IPv4 unicast specific configuration 2117 } 2118 } 2119 grouping ipv6-unicast-group { 2120 description 2121 "Group for IPv6 Unicast configuration options"; 2122 container ipv6-unicast { 2123 when "../afi-safi-name = 'bgp-mp:ipv6-unicast'" { 2124 description 2125 "Include this container for IPv6 Unicast specific 2126 configuration"; 2127 } 2128 description "IPv6 unicast configuration options"; 2129 // include common IPv[46] unicast options 2130 uses ipv4-ipv6-unicast-common; 2131 // placeholder for IPv6 unicast specific configuration 2132 // options 2133 } 2134 } 2135 grouping ipv4-labelled-unicast-group { 2136 description 2137 "Group for IPv4 Labelled Unicast configuration options"; 2138 container ipv4-labelled-unicast { 2139 when "../afi-safi-name = 'bgp-mp:ipv4-labelled-unicast'" { 2140 description 2141 "Include this container for IPv4 Labelled Unicast specific 2142 configuration"; 2143 } 2144 description "IPv4 Labelled Unicast configuration options"; 2145 uses all-afi-safi-common; 2146 // placeholder for IPv4 Labelled Unicast specific config 2147 // options 2148 } 2149 } 2150 grouping ipv6-labelled-unicast-group { 2151 description 2152 "Group for IPv6 Labelled Unicast configuration options"; 2153 container ipv6-labelled-unicast { 2154 when "../afi-safi-name = 'bgp-mp:ipv6-labelled-unicast'" { 2155 description 2156 "Include this container for IPv6 Labelled Unicast specific 2157 configuration"; 2158 } 2159 description "IPv6 Labelled Unicast configuration options"; 2160 uses all-afi-safi-common; 2161 // placeholder for IPv6 Labelled Unicast specific config 2162 // options. 2163 } 2164 } 2165 grouping l3vpn-ipv4-unicast-group { 2166 description 2167 "Group for IPv4 Unicast L3VPN configuration options"; 2169 container l3vpn-ipv4-unicast { 2170 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv4-unicast'" { 2171 description 2172 "Include this container for IPv4 Unicast L3VPN specific 2173 configuration"; 2174 } 2175 description "Unicast IPv4 L3VPN configuration options"; 2176 // include common L3VPN configuration options 2177 uses l3vpn-ipv4-ipv6-unicast-common; 2178 // placeholder for IPv4 Unicast L3VPN specific config options. 2179 } 2180 } 2181 grouping l3vpn-ipv6-unicast-group { 2182 description 2183 "Group for IPv6 Unicast L3VPN configuration options"; 2184 container l3vpn-ipv6-unicast { 2185 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv6-unicast'" { 2186 description 2187 "Include this container for unicast IPv6 L3VPN specific 2188 configuration"; 2189 } 2190 description "Unicast IPv6 L3VPN configuration options"; 2191 // include common L3VPN configuration options 2192 uses l3vpn-ipv4-ipv6-unicast-common; 2193 // placeholder for IPv6 Unicast L3VPN specific configuration 2194 // options 2195 } 2196 } 2197 grouping l3vpn-ipv4-multicast-group { 2198 description 2199 "Group for IPv4 L3VPN multicast configuration options"; 2200 container l3vpn-ipv4-multicast { 2201 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv4-multicast'" { 2202 description 2203 "Include this container for multicast IPv6 L3VPN specific 2204 configuration"; 2205 } 2206 description "Multicast IPv4 L3VPN configuration options"; 2207 // include common L3VPN multicast options 2208 uses l3vpn-ipv4-ipv6-multicast-common; 2209 // placeholder for IPv4 Multicast L3VPN specific configuration 2210 // options 2211 } 2212 } 2213 grouping l3vpn-ipv6-multicast-group { 2214 description 2215 "Group for IPv6 L3VPN multicast configuration options"; 2216 container l3vpn-ipv6-multicast { 2217 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv6-multicast'" { 2218 description 2219 "Include this container for multicast IPv6 L3VPN specific 2220 configuration"; 2221 } 2222 description "Multicast IPv6 L3VPN configuration options"; 2223 // include common L3VPN multicast options 2224 uses l3vpn-ipv4-ipv6-multicast-common; 2225 // placeholder for IPv6 Multicast L3VPN specific configuration 2226 // options 2227 } 2228 } 2229 grouping l2vpn-vpls-group { 2230 description 2231 "Group for BGP-signalled VPLS configuration options"; 2232 container l2vpn-vpls { 2233 when "../afi-safi-name = 'bgp-mp:l2vpn-vpls'" { 2234 description 2235 "Include this container for BGP-signalled VPLS specific 2236 configuration"; 2237 } 2238 description "BGP-signalled VPLS configuration options"; 2239 // include common L2VPN options 2240 uses l2vpn-common; 2241 // placeholder for BGP-signalled VPLS specific configuration 2242 // options 2243 } 2244 } 2245 grouping l2vpn-evpn-group { 2246 description 2247 "Group for BGP EVPN configuration options"; 2248 container l2vpn-evpn { 2249 when "../afi-safi-name = 'bgp-mp:l2vpn-evpn'" { 2250 description 2251 "Include this container for BGP EVPN specific 2252 configuration"; 2253 } 2254 description "BGP EVPN configuration options"; 2255 // include common L2VPN options 2256 uses l2vpn-common; 2257 // placeholder for BGP EVPN specific configuration options 2258 } 2259 } 2260 grouping bgp-route-selection-options_config { 2261 description 2262 "Set of configuration options that govern best 2263 path selection."; 2264 leaf always-compare-med { 2265 type boolean; 2266 default "false"; 2267 description 2268 "Compare multi-exit discriminator (MED) value from 2269 different ASes when selecting the best route. The 2270 default behavior is to only compare MEDs for paths 2271 received from the same AS."; 2272 } 2273 leaf ignore-as-path-length { 2274 type boolean; 2275 default "false"; 2276 description 2277 "Ignore the AS path length when selecting the best path. 2278 The default is to use the AS path length and prefer paths 2279 with shorter length."; 2280 } 2281 leaf external-compare-router-id { 2282 type boolean; 2283 default "true"; 2284 description 2285 "When comparing similar routes received from external 2286 BGP peers, use the router-id as a criterion to select 2287 the active path."; 2288 } 2289 leaf advertise-inactive-routes { 2290 type boolean; 2291 default "false"; 2292 description 2293 "Advertise inactive routes to external peers. The 2294 default is to only advertise active routes."; 2295 } 2296 leaf enable-aigp { 2297 type boolean; 2298 default false; 2299 description 2300 "Flag to enable sending / receiving accumulated IGP 2301 attribute in routing updates"; 2302 } 2303 leaf ignore-next-hop-igp-metric { 2304 type boolean; 2305 default "false"; 2306 description 2307 "Ignore the IGP metric to the next-hop when calculating 2308 BGP best-path. The default is to select the route for 2309 which the metric to the next-hop is lowest"; 2310 } 2311 } 2312 grouping bgp-use-multiple-paths-ebgp-as-options_config { 2313 description 2314 "Configuration parameters specific to eBGP multipath applicable 2315 to all contexts"; 2316 leaf allow-multiple-as { 2317 type boolean; 2318 default "false"; 2319 description 2320 "Allow multipath to use paths from different neighbouring 2321 ASes. The default is to only consider multiple paths from 2322 the same neighbouring AS."; 2323 } 2324 } 2325 grouping bgp-use-multiple-paths-ebgp_config { 2326 description 2327 "Configuration parameters relating to multipath for eBGP"; 2328 uses bgp-use-multiple-paths-ebgp-as-options_config; 2329 leaf maximum-paths { 2330 type uint32; 2331 default 1; 2332 description 2333 "Maximum number of parallel paths to consider when using 2334 BGP multipath. The default is use a single path."; 2335 } 2336 } 2337 grouping bgp-use-multiple-paths-ibgp_config { 2338 description 2339 "Configuration parmaeters relating to multipath for iBGP"; 2340 leaf maximum-paths { 2341 type uint32; 2342 default 1; 2343 description 2344 "Maximum number of parallel paths to consider when using 2345 iBGP multipath. The default is to use a single path"; 2346 } 2347 } 2348 grouping bgp-use-multiple-paths { 2349 description 2350 "Configuration parameters relating to multipath for BGP - both 2351 iBGP and eBGP"; 2352 container use-multiple-paths { 2353 description 2354 "Parameters related to the use of multiple paths for the 2355 same NLRI"; 2356 container config { 2357 description 2358 "Configuration parameters relating to multipath"; 2359 uses bgp-use-multiple-paths_config; 2360 } 2361 container state { 2362 description 2363 "State parameters relating to multipath"; 2364 uses bgp-use-multiple-paths_config; 2365 } 2366 container ebgp { 2367 description 2368 "Multipath parameters for eBGP"; 2369 container config { 2370 description 2371 "Configuration parameters relating to eBGP multipath"; 2372 uses bgp-use-multiple-paths-ebgp_config; 2373 } 2374 container state { 2375 config false; 2376 description 2377 "State information relating to eBGP multipath"; 2378 uses bgp-use-multiple-paths-ebgp_config; 2379 } 2380 } 2381 container ibgp { 2382 description 2383 "Multipath parameters for iBGP"; 2384 container config { 2385 description 2386 "Configuration parameters relating to iBGP multipath"; 2387 uses bgp-use-multiple-paths-ibgp_config; 2388 } 2389 container state { 2390 config false; 2391 description 2392 "State information relating to iBGP multipath"; 2393 uses bgp-use-multiple-paths-ibgp_config; 2394 } 2395 } 2396 } 2397 } 2398 grouping bgp-use-multiple-paths-neighbor { 2399 description 2400 "Per-neighbor configuration for multipath for BGP"; 2401 container use-multiple-paths { 2402 description 2403 "Parameters related to the use of multiple-paths for the same 2404 NLRI when they are received only from this neighbor"; 2405 container config { 2406 description 2407 "Configuration parameters relating to multipath"; 2408 uses bgp-use-multiple-paths_config; 2410 } 2411 container state { 2412 description 2413 "State parameters relating to multipath"; 2414 uses bgp-use-multiple-paths_config; 2415 } 2416 container ebgp { 2417 description 2418 "Multipath configuration for eBGP"; 2419 container config { 2420 description 2421 "Configuration parameters relating to eBGP multipath"; 2422 uses bgp-use-multiple-paths-ebgp-as-options_config; 2423 } 2424 container state { 2425 config false; 2426 description 2427 "State information relating to eBGP multipath"; 2428 uses bgp-use-multiple-paths-ebgp-as-options_config; 2429 } 2430 } 2431 } 2432 } 2433 grouping bgp-use-multiple-paths_config { 2434 description 2435 "Generic configuration options relating to use of multiple 2436 paths for a referenced AFI-SAFI, group or neighbor"; 2437 leaf enabled { 2438 type boolean; 2439 default false; 2440 description 2441 "Whether the use of multiple paths for the same NLRI is 2442 enabled for the neighbor. This value is overridden by 2443 any more specific configuration value."; 2444 } 2445 } 2446 grouping bgp-afi-safi-graceful-restart_config { 2447 description 2448 "BGP graceful restart parameters that apply on a per-AFI-SAFI 2449 basis"; 2450 leaf enabled { 2451 type boolean; 2452 default false; 2453 description 2454 "This leaf indicates whether graceful-restart is enabled for 2455 this AFI-SAFI"; 2456 } 2457 } 2458 grouping bgp-afi-safi_config { 2459 description 2460 "Configuration parameters used for all BGP AFI-SAFIs"; 2461 leaf afi-safi-name { 2462 type identityref { 2463 base bgp-types:afi-safi-type; 2464 } 2465 description "AFI,SAFI"; 2466 } 2467 leaf enabled { 2468 type boolean; 2469 default false; 2470 description 2471 "This leaf indicates whether the IPv4 Unicast AFI,SAFI is 2472 enabled for the neighbour or group"; 2473 } 2474 } 2475 grouping all-afi-safi-common-prefix-limit_config { 2476 description 2477 "Configuration parameters relating to prefix-limits for an 2478 AFI-SAFI"; 2479 leaf max-prefixes { 2480 type uint32; 2481 description 2482 "Maximum number of prefixes that will be accepted 2483 from the neighbour"; 2484 } 2485 leaf shutdown-threshold-pct { 2486 type bgp-types:percentage; 2487 description 2488 "Threshold on number of prefixes that can be received 2489 from a neighbour before generation of warning messages 2490 or log entries. Expressed as a percentage of 2491 max-prefixes"; 2492 } 2493 leaf restart-timer { 2494 type decimal64 { 2495 fraction-digits 2; 2496 } 2497 units "seconds"; 2498 description 2499 "Time interval in seconds after which the BGP session 2500 is re-established after being torn down due to exceeding 2501 the max-prefix limit."; 2502 } 2503 } 2504 grouping ipv4-ipv6-unicast-common_config { 2505 description 2506 "Common configuration parameters for IPv4 and IPv6 Unicast 2507 address families"; 2508 leaf send-default-route { 2509 type boolean; 2510 default "false"; 2511 description 2512 "If set to true, send the default-route to the neighbour(s)"; 2513 } 2514 } 2515 grouping all-afi-safi-common { 2516 description 2517 "Grouping for configuration common to all AFI,SAFI"; 2518 container prefix-limit { 2519 description 2520 "Configure the maximum number of prefixes that will be 2521 accepted from a peer"; 2522 container config { 2523 description 2524 "Configuration parameters relating to the prefix 2525 limit for the AFI-SAFI"; 2526 uses all-afi-safi-common-prefix-limit_config; 2527 } 2528 container state { 2529 config false; 2530 description 2531 "State information relating to the prefix-limit for the 2532 AFI-SAFI"; 2533 uses all-afi-safi-common-prefix-limit_config; 2534 } 2535 } 2536 } 2537 grouping ipv4-ipv6-unicast-common { 2538 description 2539 "Common configuration that is applicable for IPv4 and IPv6 2540 unicast"; 2541 // include common afi-safi options. 2542 uses all-afi-safi-common; 2543 // configuration options that are specific to IPv[46] unicast 2544 container config { 2545 description 2546 "Configuration parameters for common IPv4 and IPv6 unicast 2547 AFI-SAFI options"; 2548 uses ipv4-ipv6-unicast-common_config; 2549 } 2550 container state { 2551 config false; 2552 description 2553 "State information for common IPv4 and IPv6 unicast 2554 parameters"; 2555 uses ipv4-ipv6-unicast-common_config; 2556 } 2557 } 2558 grouping l3vpn-ipv4-ipv6-unicast-common { 2559 description 2560 "Common configuration applied across L3VPN for IPv4 2561 and IPv6"; 2562 // placeholder -- specific configuration options that are generic 2563 // across IPv[46] unicast address families. 2564 uses all-afi-safi-common; 2565 } 2566 grouping l3vpn-ipv4-ipv6-multicast-common { 2567 description 2568 "Common configuration applied across L3VPN for IPv4 2569 and IPv6"; 2570 // placeholder -- specific configuration options that are 2571 // generic across IPv[46] multicast address families. 2572 uses all-afi-safi-common; 2573 } 2574 grouping l2vpn-common { 2575 description 2576 "Common configuration applied across L2VPN address 2577 families"; 2578 // placeholder -- specific configuration options that are 2579 // generic across L2VPN address families 2580 uses all-afi-safi-common; 2581 } 2582 grouping bgp-route-selection-options { 2583 description 2584 "Parameters relating to the BGP route selection process"; 2585 container route-selection-options { 2586 description 2587 "Parameters relating to options for route selection"; 2588 container config { 2589 description 2590 "Configuration parameters relating to route selection 2591 options"; 2592 uses bgp-route-selection-options_config; 2593 } 2594 container state { 2595 config false; 2596 description 2597 "State information for the route selection options"; 2598 uses bgp-route-selection-options_config; 2599 } 2600 } 2601 } 2602 // *********** STRUCTURE GROUPINGS ********************** 2603 grouping bgp-global-afi-safi { 2604 description 2605 "Parameters and route selection options for MP-BGP 2606 specific to the Global AFI-SAFI"; 2607 uses bgp-route-selection-options; 2608 } 2609 grouping bgp-group-afi-safi { 2610 description 2611 "Parameters and route selection options for MP-BGP 2612 specific to peer groups"; 2613 uses bgp-route-selection-options; 2614 } 2615 grouping bgp-common-afi-safi-list { 2616 description 2617 "List of address-families associated with the BGP instance, 2618 a peer-group or neighbor"; 2619 list afi-safi { 2620 key "afi-safi-name"; 2621 description 2622 "AFI,SAFI configuration available for the 2623 neighbour or group"; 2624 leaf afi-safi-name { 2625 type leafref { 2626 path "../config/afi-safi-name"; 2627 } 2628 description 2629 "Reference to the AFI-SAFI name used as a key 2630 for the AFI-SAFI list"; 2631 } 2632 container graceful-restart { 2633 description 2634 "Parameters relating to BGP graceful-restart"; 2635 container config { 2636 description 2637 "Configuration options for BGP graceful-restart"; 2638 uses bgp-afi-safi-graceful-restart_config; 2639 } 2640 container state { 2641 config false; 2642 description 2643 "State information for BGP graceful-restart"; 2644 uses bgp-afi-safi-graceful-restart_config; 2645 } 2646 } 2647 container config { 2648 description 2649 "Configuration parameters for the AFI-SAFI"; 2651 uses bgp-afi-safi_config; 2652 } 2653 container state { 2654 config false; 2655 description 2656 "State information relating to the AFI-SAFI"; 2657 uses bgp-afi-safi_config; 2658 uses bgp-op:bgp-afi-safi_state; 2659 } 2660 // import and export policy included for the afi/safi 2661 uses rpol:apply-policy-group; 2662 uses ipv4-unicast-group; 2663 uses ipv6-unicast-group; 2664 uses ipv4-labelled-unicast-group; 2665 uses ipv6-labelled-unicast-group; 2666 uses l3vpn-ipv4-unicast-group; 2667 uses l3vpn-ipv6-unicast-group; 2668 uses l3vpn-ipv4-multicast-group; 2669 uses l3vpn-ipv6-multicast-group; 2670 uses l2vpn-vpls-group; 2671 uses l2vpn-evpn-group; 2672 } 2673 } 2674 } 2675 2677 6.5. BGP operational data items 2679 file "ietf-bgp-operational.yang" 2680 module ietf-bgp-operational { 2681 yang-version "1"; 2683 namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-operational"; 2684 prefix "bgp-op"; 2685 // import some basic inet types 2686 import ietf-inet-types { prefix inet; } 2687 import ietf-yang-types { prefix yang; } 2688 import ietf-bgp-types { prefix bgp-types; } 2689 // meta 2690 organization 2691 "OpenConfig working group"; 2692 contact 2693 "OpenConfig working group 2694 netopenconfig@googlegroups.com"; 2695 description 2696 "This module is part of a YANG model for BGP protocol 2697 configuration, focusing on operational data (i.e., state 2698 variables) related to BGP operations"; 2699 revision "2016-01-06" { 2700 description 2701 "Updated filename and namespace"; 2702 reference "TBD"; 2703 } 2704 // extension statements 2705 // feature statements 2706 // identity statements 2707 // typedef statements 2708 // grouping statements 2709 grouping bgp-counters-message-types_common { 2710 description 2711 "Grouping of BGP message types, included for re-use 2712 across counters"; 2713 leaf UPDATE { 2714 type uint64; 2715 description 2716 "Number of BGP UPDATE messages announcing, withdrawing 2717 or modifying paths exchanged."; 2718 } 2719 leaf NOTIFICATION { 2720 type uint64; 2721 description 2722 "Number of BGP NOTIFICATION messages indicating an 2723 error condition has occurred exchanged."; 2724 } 2725 } 2726 grouping bgp-context-pfx-path-counters_common { 2727 description 2728 "Grouping containing common counters relating to prefixes and 2729 paths"; 2730 leaf total-paths { 2731 type uint32; 2732 description 2733 "Total number of BGP paths within the context"; 2734 } 2735 leaf total-prefixes { 2736 type uint32; 2737 description 2738 ""; 2739 } 2740 } 2741 grouping bgp-global_state { 2742 description 2743 "Grouping containing operational parameters relating to the 2744 global BGP instance"; 2745 uses bgp-context-pfx-path-counters_common; 2747 } 2748 grouping bgp-global-afi-safi_state { 2749 description 2750 "Grouping containing operational parameters relating to each 2751 AFI-SAFI within the BGP global instance"; 2752 uses bgp-context-pfx-path-counters_common; 2753 } 2754 grouping bgp-peer-group_state { 2755 description 2756 "Grouping containing operational parameters relating to a BGP 2757 peer group"; 2758 uses bgp-context-pfx-path-counters_common; 2759 } 2760 grouping bgp-neighbor_state { 2761 description 2762 "Grouping containing operational state variables relating to a 2763 BGP neighbor"; 2764 leaf session-state { 2765 type enumeration { 2766 enum IDLE { 2767 description 2768 "neighbor is down, and in the Idle state of the 2769 FSM"; 2770 } 2771 enum CONNECT { 2772 description 2773 "neighbor is down, and the session is waiting for 2774 the underlying transport session to be established"; 2775 } 2776 enum ACTIVE { 2777 description 2778 "neighbor is down, and the local system is awaiting 2779 a conncetion from the remote peer"; 2780 } 2781 enum OPENSENT { 2782 description 2783 "neighbor is in the process of being established. 2784 The local system has sent an OPEN message"; 2785 } 2786 enum OPENCONFIRM { 2787 description 2788 "neighbor is in the process of being established. 2789 The local system is awaiting a NOTIFICATION or 2790 KEEPALIVE message"; 2791 } 2792 enum ESTABLISHED { 2793 description 2794 "neighbor is up - the BGP session with the peer is 2795 established"; 2796 } 2797 } 2798 description 2799 "Operational state of the BGP peer"; 2800 } 2801 leaf-list supported-capabilities { 2802 type identityref { 2803 base bgp-types:bgp-capability; 2804 } 2805 description 2806 "BGP capabilities negotiated as supported with the peer"; 2807 } 2808 } 2809 grouping bgp-neighbor-afi-safi_state { 2810 description 2811 "Operational state on a per-AFI-SAFI basis for a BGP 2812 neighbor"; 2813 leaf active { 2814 type boolean; 2815 description 2816 "This value indicates whether a particular AFI-SAFI has 2817 been succesfully negotiated with the peer. An AFI-SAFI 2818 may be enabled in the current running configuration, but a 2819 session restart may be required in order to negotiate the new 2820 capability."; 2821 } 2822 uses bgp-neighbor-prefix-counters_state; 2823 } 2824 grouping bgp-neighbor-prefix-counters_state { 2825 description 2826 "Counters for BGP neighbor sessions"; 2827 container prefixes { 2828 description "Prefix counters for the BGP session"; 2829 leaf received { 2830 type uint32; 2831 description 2832 "The number of prefixes received from the neighbor"; 2833 } 2834 leaf sent { 2835 type uint32; 2836 description 2837 "The number of prefixes advertised to the neighbor"; 2838 } 2839 leaf installed { 2840 type uint32; 2841 description 2842 "The number of advertised prefixes installed in the 2843 Loc-RIB"; 2844 } 2845 } 2846 } 2847 grouping bgp-neighbor-message-counters-sent_state { 2848 description 2849 "Counters relating to messages sent to a BGP neighbor"; 2850 uses bgp-counters-message-types_common; 2851 } 2852 grouping bgp-neighbor-message-counters-received_state { 2853 description 2854 "Counters relating to the mesages received from a BGP 2855 neighbor"; 2856 uses bgp-counters-message-types_common; 2857 } 2858 grouping bgp-neighbor-queue-counters_state { 2859 description 2860 "Counters relating to the message queues associated with the 2861 BGP peer"; 2862 leaf input { 2863 type uint32; 2864 description 2865 "The number of messages received from the peer currently 2866 queued"; 2867 } 2868 leaf output { 2869 type uint32; 2870 description 2871 "The number of messages queued to be sent to the peer"; 2872 } 2873 } 2874 grouping bgp-neighbor-transport_state { 2875 description 2876 "Operational state parameters relating to the transport session 2877 used for the BGP session"; 2878 leaf local-port { 2879 type inet:port-number; 2880 description 2881 "Local TCP port being used for the TCP session supporting 2882 the BGP session"; 2883 } 2884 leaf remote-address { 2885 type inet:ip-address; 2886 description 2887 "Remote port being used by the peer for the TCP session 2888 supporting the BGP session"; 2889 } 2890 leaf remote-port { 2891 type inet:port-number; 2892 description 2893 "Remote address to which the BGP session has been 2894 established"; 2895 } 2896 } 2897 grouping bgp-neighbor-error-handling_state { 2898 description 2899 "Operational state parameters relating to enhanced error 2900 error handling for BGP"; 2901 leaf erroneous-update-messages { 2902 type uint32; 2903 description 2904 "The number of BGP UPDATE messages for which the 2905 treat-as-withdraw mechanism has been applied based 2906 on erroneous message contents"; 2907 } 2908 } 2909 grouping bgp-neighbor-timers_state { 2910 description 2911 "Operational state parameters relating to BGP timers associated 2912 with the BGP session"; 2913 leaf uptime { 2914 type yang:timeticks; 2915 description 2916 "This timer determines the amount of time since the 2917 BGP last transitioned in or out of the Established 2918 state"; 2919 } 2920 leaf negotiated-hold-time { 2921 type decimal64 { 2922 fraction-digits 2; 2923 } 2924 description 2925 "The negotiated hold-time for the BGP session"; 2926 } 2927 } 2928 grouping bgp-afi-safi_state { 2929 description 2930 "Operational state information relevant to all address 2931 families that may be carried by the BGP session"; 2932 // placeholder - options in this container are 2933 // valid in both the global and per-neighbor 2934 // paths 2935 } 2936 grouping bgp-afi-safi-graceful-restart_state { 2937 description 2938 "Operational state information relevant to graceful restart 2939 for BGP"; 2940 leaf peer-restart-time { 2941 type uint16 { 2942 range 0..4096; 2943 } 2944 description 2945 "The period of time (advertised by the peer) that 2946 the peer expects a restart of a BGP session to 2947 take"; 2948 } 2949 leaf peer-restarting { 2950 type boolean; 2951 description 2952 "This flag indicates whether the remote neighbor is currently 2953 in the process of restarting, and hence received routes are 2954 currently stale"; 2955 } 2956 leaf local-restarting { 2957 type boolean; 2958 description 2959 "This flag indicates whether the local neighbor is currently 2960 restarting. The flag is unset after all NLRI have been 2961 advertised to the peer, and the End-of-RIB (EOR) marker has 2962 been unset"; 2963 } 2964 leaf mode { 2965 type enumeration { 2966 enum HELPER-ONLY { 2967 description 2968 "The local router is operating in helper-only mode, and 2969 hence will not retain forwarding state during a local 2970 session restart, but will do so during a restart of the 2971 remote peer"; 2972 } 2973 enum BILATERAL { 2974 description 2975 "The local router is operating in both helper mode, and 2976 hence retains forwarding state during a remote restart, 2977 and also maintains forwarding state during local session 2978 restart"; 2979 } 2980 enum REMOTE-HELPER { 2981 description 2982 "The local system is able to retain routes during restart 2983 but the remote system is only able to act as a helper"; 2984 } 2985 } 2986 description 2987 "Ths leaf indicates the mode of operation of BGP graceful 2988 restart with the peer"; 2989 } 2990 } 2991 grouping bgp-neighbor-afi-safi-graceful-restart_state { 2992 description 2993 "Operational state variables relating to the graceful-restart 2994 mechanism on a per-AFI-SAFI basis"; 2995 leaf received { 2996 type boolean; 2997 description 2998 "This leaf indicates whether the neighbor advertised the 2999 ability to support graceful-restart for this AFI-SAFI"; 3000 } 3001 leaf advertised { 3002 type boolean; 3003 description 3004 "This leaf indicates whether the ability to support 3005 graceful-restart has been advertised to the peer"; 3006 } 3007 } 3008 } 3009 3011 7. References 3013 7.1. Normative references 3015 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3016 the Network Configuration Protocol (NETCONF)", RFC 6020, 3017 DOI 10.17487/RFC6020, October 2010, 3018 . 3020 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3021 and A. Bierman, Ed., "Network Configuration Protocol 3022 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3023 . 3025 [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A 3026 Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 3027 10.17487/RFC4271, January 2006, 3028 . 3030 [RFC1997] Chandra, R., Traina, P., and T. Li, "BGP Communities 3031 Attribute", RFC 1997, DOI 10.17487/RFC1997, August 1996, 3032 . 3034 [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route 3035 Reflection: An Alternative to Full Mesh Internal BGP 3036 (IBGP)", RFC 4456, DOI 10.17487/RFC4456, April 2006, 3037 . 3039 [RFC3065] Traina, P., McPherson, D., and J. Scudder, "Autonomous 3040 System Confederations for BGP", RFC 3065, DOI 10.17487/ 3041 RFC3065, February 2001, 3042 . 3044 [RFC2439] Villamizar, C., Chandra, R., and R. Govindan, "BGP Route 3045 Flap Damping", RFC 2439, DOI 10.17487/RFC2439, November 3046 1998, . 3048 [RFC4724] Sangli, S., Chen, E., Fernando, R., Scudder, J., and Y. 3049 Rekhter, "Graceful Restart Mechanism for BGP", RFC 4724, 3050 DOI 10.17487/RFC4724, January 2007, 3051 . 3053 [RFC6811] Mohapatra, P., Scudder, J., Ward, D., Bush, R., and R. 3054 Austein, "BGP Prefix Origin Validation", RFC 6811, DOI 3055 10.17487/RFC6811, January 2013, 3056 . 3058 [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, 3059 "Multiprotocol Extensions for BGP-4", RFC 4760, DOI 3060 10.17487/RFC4760, January 2007, 3061 . 3063 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 3064 6991, DOI 10.17487/RFC6991, July 2013, 3065 . 3067 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3068 DOI 10.17487/RFC3688, January 2004, 3069 . 3071 7.2. Informative references 3073 [I-D.shaikh-rtgwg-policy-model] 3074 Shaikh, A., Shakir, R., D'Souza, K., and C. Chase, 3075 "Routing Policy Configuration Model for Service Provider 3076 Networks", draft-shaikh-rtgwg-policy-model-01 (work in 3077 progress), July 2015. 3079 [I-D.openconfig-netmod-opstate] 3080 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 3081 of Operational State Data in YANG", draft-openconfig- 3082 netmod-opstate-01 (work in progress), July 2015. 3084 [I-D.ietf-netmod-routing-cfg] 3085 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3086 Management", draft-ietf-netmod-routing-cfg-20 (work in 3087 progress), October 2015. 3089 [I-D.rtgyangdt-rtgwg-device-model] 3090 Lindem, A., Berger, L., Bogdanovic, D., and C. Hopps, 3091 "Network Device YANG Organizational Model", draft- 3092 rtgyangdt-rtgwg-device-model-01 (work in progress), 3093 September 2015. 3095 Appendix A. Acknowledgements 3097 The authors are grateful for valuable contributions to this document 3098 and the associated models from: Ebben Aires, Pavan Beeram, Chris 3099 Chase, Ed Crabbe, Luyuan Fang, Bill Fenner, Akshay Gattani, Josh 3100 George, Vijay Gill, Jeff Haas, Dhanendra Jain, Ina Minei, Carl 3101 Moberg, Ashok Narayanan, Einar Nilsen-Nygaard, Adam Simpson, Puneet 3102 Sood, Jason Sterne, Jim Uttaro, and Gunter Vandevelde. 3104 Appendix B. Change summary 3106 B.1. Changes between revisions -00 and -01 3108 o Updated module namespaces to reflect IETF standard namespace. 3110 o Updated module filenames with ietf- prefix per RFC 6087 3111 guidelines. 3113 Authors' Addresses 3115 Anees Shaikh (editor) 3116 Google 3117 1600 Amphitheatre Pkwy 3118 Mountain View, CA 94043 3119 US 3121 Email: aashaikh@google.com 3122 Rob Shakir (editor) 3123 Jive Communications, Inc. 3124 1275 West 1600 North, Suite 100 3125 Orem, UT 84057 3127 Email: rjs@rob.sh 3129 Keyur Patel (editor) 3130 Cisco 3131 170 W. Tasman Drive 3132 San Jose, CA 95134 3133 USA 3135 Email: keyupate@cisco.com 3137 Susan Hares (editor) 3138 Huawei 3139 7453 Hickory Hill 3140 Saline, MI 48176 3141 USA 3143 Email: shares@ndzh.com 3145 Kevin D'Souza 3146 AT&T 3147 200 S. Laurel Ave 3148 Middletown, NJ 3149 US 3151 Email: kd6913@att.com 3153 Deepak Bansal 3154 Microsoft 3155 205 108th Ave. NE, Suite 400 3156 Bellevue, WA 3157 US 3159 Email: dbansal@microsoft.com 3160 Alexander Clemm 3161 Cisco 3162 170 W. Tasman Drive 3163 San Jose, CA 95134 3164 USA 3166 Email: alex@cisco.com 3168 Aleksandr Zhdankin 3169 Cisco 3170 170 W. Tasman Drive 3171 San Jose, CA 95134 3172 USA 3174 Email: azhdanki@cisco.com 3176 Mahesh Jethanandani 3177 Ciena 3178 1741 Technology Drive 3179 San Jose, CA 95110 3180 USA 3182 Email: mjethanandani@gmail.com 3184 Xyfeng Liu 3185 Ericsson 3186 1595 Spring Hill Road, Suite 500 3187 Vienna, VA 22182 3188 USA 3190 Email: xufeng.liu@ericsson.com