idnits 2.17.1 draft-ietf-idr-bgp-model-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 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 2360 has weird spacing: '...unicast speci...' -- The document date (July 6, 2015) is 3214 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 (-01) exists of draft-shaikh-rtgwg-policy-model-00 == Outdated reference: A later version (-01) exists of draft-openconfig-netmod-opstate-00 == Outdated reference: A later version (-25) exists of draft-ietf-netmod-routing-cfg-19 == Outdated reference: A later version (-05) exists of draft-rtgyangdt-rtgwg-device-model-00 Summary: 1 error (**), 0 flaws (~~), 7 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: January 7, 2016 BT 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 July 6, 2015 23 BGP Model for Service Provider Networks 24 draft-ietf-idr-bgp-model-00 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 January 7, 2016. 49 Copyright Notice 51 Copyright (c) 2015 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 . . . . . . . . . . . . . . . . . . . . . 30 78 6.3. BGP policy items . . . . . . . . . . . . . . . . . . . . 38 79 6.4. BGP multiprotocol items . . . . . . . . . . . . . . . . . 49 80 6.5. BGP operational data items . . . . . . . . . . . . . . . 64 81 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 72 82 7.1. Normative references . . . . . . . . . . . . . . . . . . 72 83 7.2. Informative references . . . . . . . . . . . . . . . . . 73 84 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 73 85 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 74 87 1. Introduction 89 YANG [RFC6020] is a data modeling language that was introduced to 90 define the contents of a conceptual data store that allows networked 91 devices to be managed using NETCONF [RFC6241]. YANG is proving 92 relevant beyond its initial confines, as bindings to other interfaces 93 (e.g. ReST) and encodings other than XML (e.g. JSON) are being 94 defined. Furthermore, YANG data models can be used as the basis of 95 implementation for a number of interfaces, such as CLIs and 96 programmatic APIs. 98 This document describes a YANG data model for the BGP [RFC4271] 99 protocol, including various protocol extensions, policy 100 configuration, as well as defining key operational state data. The 101 model is intended to be vendor-neutral, in order to allow operators 102 to manage BGP configuration in heterogeneous environments with 103 routers supplied by multiple vendors. The model is also intended to 104 be readily mapped to existing implementations to facilitate support 105 from as large a set of routing hardware and software vendors as 106 possible. 108 1.1. Goals and approach 110 The model covers the base BGP features that are deployed across major 111 implementations and the common BGP configurations in use across a 112 number of operator network deployments. In particular, this model 113 attempts to cover BGP features defined in [RFC4271], [RFC1997], 114 [RFC4456], [RFC4760], [RFC3065], [RFC2439], [RFC4724], and [RFC6811]. 116 Along with configuration of base BGP features, this model also 117 addresses policy configuration, by providing "hooks" for applying 118 policies, and also defining BGP-specific policy features. The BGP 119 policy features are intended to be used with the general routing 120 policy model defined in [I-D.shaikh-rtgwg-policy-model]. The model 121 also supports operational state data to enable a common model for 122 reading BGP-related state from a BGP speaker. 124 For the base BGP features, the focus of the model described in this 125 document is on providing configuration and operational state 126 information relating to: 128 o The global BGP instance, and neighbors whose configuration is 129 specified individually, or templated with the use of peer-groups. 131 o The address families that are supported by peers, and the global 132 configuration which relates to them. 134 o The policy configuration "hooks" and BGP-specific policy features 135 that relate to a neighbor - controlling the import and export of 136 NLRIs. 138 As mentioned earlier, any configuration items that are deemed to be 139 widely available in existing major BGP implementations are included 140 in the model. Additional, more esoteric, configuration items that 141 are not commonly used, or only available from a single 142 implementation, are omitted from the model with an expectation that 143 they will be available in companion modules that augment the current 144 model. This allows clarity in identifying data that is part of the 145 vendor-neutral base model. 147 Where possible, naming in the model follows conventions used in 148 available standards documents, and otherwise tries to be self- 149 explanatory with sufficient descriptions of the intended behavior. 150 Similarly, configuration data value constraints and default values, 151 where used, are based on recommendations in current standards 152 documentation. Since implementations vary widely in this respect, 153 this version of the model specifies only a limited set of defaults 154 and ranges with the expectation of being more prescriptive in future 155 versions based on actual operator use. 157 2. Model overview 159 The BGP model is defined across several YANG modules but at a high 160 level is organized into Six elements: 162 o base protocol configuration -- configuration affecting BGP 163 protocol-related operations, defined at various levels of 164 hierarchy. 166 o multiprotocol configuration -- configuration affecting individual 167 address-families within BGP [RFC4760]. 169 o neighbor configuration -- configuration affecting an individual 170 neighbor within BGP. 172 o neighbor multiprotocol configuration -- configuration affecting 173 individual address-families for a neighbor within BGP. 175 o policy configuration -- hooks for application of the policies 176 defined in [I-D.shaikh-rtgwg-policy-model] that act on routes sent 177 (received) to (from) peers or other routing protocols and BGP- 178 specific policy features. 180 o operational state -- variables used for monitoring, management, 181 etc. of BGP operations. 183 These modules also make use of standard Internet types, such as IP 184 addresses and prefixes, autonomous system numbers, etc., defined in 185 RFC 6991 [RFC6991]. 187 Throughout the model, the approach described in 188 [I-D.openconfig-netmod-opstate] is used to represent configuration 189 (intended state), operational and derived state data. That is to 190 say, that each container holds a "config" and "state" sub-container - 191 with the config container being used for configurable parameters, and 192 the state container container holding representing both the 193 operational state of configurable leaves, and derived counters and 194 statistical information. 196 2.1. BGP protocol configuration 198 The BGP protocol configuration model is organized hierarchically, 199 much like the majority of router implementations. That is, 200 configuration items can be specified at multiple levels, as shown 201 below. 203 +--rw bgp! 204 +--rw global 205 | +-- (global-configuration-options) 206 +--rw neighbors 207 | +--rw neighbor* [neighbor-address] 208 | +-- (neighbor-configuration-options) 209 +--rw peer-groups 210 +--rw peer-group* [peer-group-name] 211 +-- (neighbor-configuration-options) 213 Users may specify configuration at a higher level and have it apply 214 to all lower-level items, or provide overriding configuration at a 215 lower level of the hierarchy. Overriding configuration items are 216 optional, with neighbor specific configuration being the most 217 specific or lowest level, followed by peer-group, and finally global. 218 Global configuration options reflect a subset of the peer-group or 219 neighbor specific configuration options which are relevant to the 220 entire BGP instance. 222 The model makes the simplifying assumption that most of the 223 configuration items are available at all levels of the hierarchy. 224 That is, very little configuration is specific to a particular level 225 in the hierarchy, other than obvious items such as "group-name" only 226 being available for the peer group-level config. A notable exception 227 is for sub-address family configuration where some items are only 228 applicable for a given AFI-SAFI combination. 230 In order to allow common configuration to be applied to a set of 231 neighbors, all neighbor configuration options are available within a 232 peer-group. A neighbor is associated to a particular peer-group 233 through the use of a peer-group leaf (which provides a reference to a 234 configured item in the peer-group list). 236 Address-family configuration is made available in multiple points 237 within the model - primarily within the global container, where 238 instance-wide configuration can be set (for example, global protocol 239 parameters, the BGP best path route selection options, or global 240 policies relating to the address-family); and on a per-neighbor or 241 per-peer-group basis, where address-families can be enabled or 242 disabled, and policy associated with the parent entity applied. 243 Within the afi-safi container, generic configuration that applies to 244 all address-families (e.g., whether the AFI-SAFI is enabled) is 245 presented at the top-level, with address-family specific containers 246 made available for options relating to only that AFI-SAFI. Within 247 the current revision of the model a generic set of address-families, 248 and common configuration and state options are included - further 249 work is expected to add additional parameters to this area of the 250 model. 252 The following address-families are currently supported by the model: 254 +--rw bgp! 255 +--rw global 256 +--rw afi-safis 257 +--rw afi-safi* [afi-safi-name] 258 +--rw afi-safi-name -> ../config/afi-safi-name 259 | 260 +--rw ipv4-unicast 261 | ... 262 +--rw ipv6-unicast 263 | ... 264 +--rw ipv4-labelled-unicast 265 | ... 266 +--rw ipv6-labelled-unicast 267 | ... 268 +--rw l3vpn-ipv4-unicast 269 | ... 270 +--rw l3vpn-ipv6-unicast 271 | ... 272 +--rw l3vpn-ipv4-multicast 273 | ... 274 +--rw l3vpn-ipv6-multicast 275 | ... 276 +--rw l2vpn-vpls 277 | ... 278 +--rw l2vpn-evpn 279 | ... 281 2.2. Policy configuration overview 283 The BGP policy configuration model references the generic YANG 284 routing policy model described in [I-D.shaikh-rtgwg-policy-model], 285 which represents a condition-action policy framework for routing. 286 This model adds BGP-specific conditions (e.g., matching on the 287 community attribute), and actions (e.g., setting local preference) to 288 the generic policy framework. 290 Policies that are defined in the routing-policy model are referenced 291 in multiple places within the model: 293 o within the global instance, where a policy applies to all address- 294 families for all peers. 296 o on a global AFI-SAFI basis, where policies apply to all peers for 297 a particular address-family. 299 o on a per-peer-group or per-neighbor basis - where the policy 300 applies to all address-families for the particular parent entity. 302 o on a per-afi-safi basis within a neighbor or peer-group context, 303 where the policy is specific to the AFI-SAFI for a a specific 304 neighbor or group. 306 +--rw bgp 307 +--rw global 308 | +--rw afi-safi 309 | | +--rw afi-safi* [afi-safi-name] 310 | | +--rw apply-policy 311 | +--rw apply-policy 312 +--rw neighbors 313 | +--rw neighbor* [neighbor-address] 314 | +--rw afi-safi 315 | | +--rw afi-safi* [afi-safi-name] 316 | | +--rw apply-policy 317 | +--rw apply-policy 318 +--rw peer-groups 319 +--rw peer-group* [peer-group-name] 320 +--rw afi-safi 321 | +--rw afi-safi* [afi-safi-name] 322 | +--rw apply-policy 323 +--rw apply-policy 325 2.3. Operational data overview 327 The BGP operational model contains a set of parameters which relate 328 to the operational state of the various elements of the BGP router. 329 As noted in Section 2 - the approach described in 330 [I-D.openconfig-netmod-opstate] is utilized for the inclusion of 331 operational and statistical data. To this end, the "_state" 332 groupings (those that contain derived operational parameters) are 333 contained within the BGP operational model - and included within the 334 relevant "state" containers throughout the core BGP model. In some 335 cases, operational information may be relevant to one instance of a 336 common grouping, but not another - for example, the number of 337 received, advertised, and installed prefixes is relevant on a per- 338 neighbor-basis, but is not required (or meaningful) in the peer-group 339 context. To enable state to be added to particular contexts, the 340 tree is augmented through the base BGP module to add these variables, 341 without requiring separate groupings. 343 3. Relation to other YANG data models 345 The BGP model is intended to work within a larger framework model, 346 such as the Routing Management model [I-D.ietf-netmod-routing-cfg] or 347 the Network Device Organizational Model 348 [I-D.rtgyangdt-rtgwg-device-model], both of which define the notion 349 of routing instances, or VRFs. 351 For example, for integration with the Routing Management model, the 352 following additions to the BGP model could be made: 354 o a new identity type for BGP that is derived from rt:routing- 355 protocol 357 o augmentation of the "/rt:routing/rt:routing-instance/rt:routing- 358 protocols/routing-protocol" container with BGP-specific parameters 360 o possible addition of BGP-specific route attributes in 361 "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" and 362 "/rt:active-route/rt:output/rt:route" 364 Future updates of the BGP model and this document will further 365 develop the integration with other framework models related to 366 routing protocols. 368 4. Security Considerations 370 BGP configuration has a significant impact on network operations, and 371 as such any related protocol or model carries potential security 372 risks. 374 YANG data models are generally designed to be used with the NETCONF 375 protocol over an SSH transport. This provides an authenticated and 376 secure channel over which to transfer BGP configuration and 377 operational data. Note that use of alternate transport or data 378 encoding (e.g., JSON over HTTPS) would require similar mechanisms for 379 authenticating and securing access to configuration data. 381 Most of the data elements in the configuration model could be 382 considered sensitive from a security standpoint. Unauthorized access 383 or invalid data could cause major disruption. 385 5. IANA Considerations 387 An appropriate namespace URI will be registered in the IETF XML 388 Registry" [RFC3688]. The BGP YANG modules will be registered in the 389 "YANG Module Names" registry [RFC6020]. 391 6. YANG modules 393 The modules comprising the BGP configuration and operational model 394 are described by the YANG modules in the sections below. The base 395 module imports the other modules to create the overall model. 397 6.1. BGP base items 399 file bgp.yang 400 module bgp { 402 yang-version "1"; 404 // namespace 405 namespace "http://openconfig.net/yang/bgp"; 407 prefix "bgp"; 409 // import some basic inet types 410 import ietf-inet-types { prefix inet; } 411 import bgp-multiprotocol { prefix bgp-mp; } 412 import routing-policy { prefix rpol; } 413 import bgp-types { prefix bgp-types; } 414 import bgp-operational { prefix bgp-op; } 416 // meta 417 organization 418 "OpenConfig working group"; 420 contact 421 "OpenConfig working group 422 netopenconfig@googlegroups.com"; 424 description 425 "This module describes a YANG model for BGP protocol 426 configuration.It is a limited subset of all of the configuration 427 parameters available in the variety of vendor implementations, 428 hence it is expected that it would be augmented with vendor- 429 specific configuration data as needed. Additional modules or 430 submodules to handle other aspects of BGP configuration, 431 including policy, VRFs, VPNs, and additional address families 432 are also expected. 434 This model supports the following BGP configuration level 435 hierarchy: 437 BGP 438 | 439 +-> [ global BGP configuration ] 440 +-> AFI / SAFI global 441 +-> peer group 442 +-> [ peer group config ] 443 +-> AFI / SAFI [ per-AFI overrides ] 444 +-> neighbor 445 +-> [ neighbor config ] 446 +-> [ optional pointer to peer-group ] 447 +-> AFI / SAFI [ per-AFI overrides ]"; 449 revision "2015-05-15" { 450 description 451 ""; 452 reference "TBD"; 453 } 455 grouping bgp-global_config { 456 description 457 "Global configuration options for the BGP router."; 459 leaf as { 460 type inet:as-number; 461 mandatory "true"; 462 description 463 "Local autonomous system number of the router. Uses 464 the 32-bit as-number type from the model in RFC 6991."; 465 } 466 leaf router-id { 467 type inet:ipv4-address; 468 description 469 "Router id of the router, expressed as an 470 32-bit value, IPv4 address."; 471 } 472 } 474 grouping bgp-default-route-distance_config { 475 description 476 "Configuration options relating to the administrative distance 477 (or preference) assigned to routes received from different 478 sources (external, internal, and local)."; 480 leaf external-route-distance { 481 type uint8 { 482 range "1..255"; 483 } 484 description 485 "Administrative distance for routes learned from external 486 BGP (eBGP)."; 487 } 488 leaf internal-route-distance { 489 type uint8 { 490 range "1..255"; 491 } 492 description 493 "Administrative distance for routes learned from internal 494 BGP (iBGP)."; 495 } 496 } 498 grouping bgp-confederation_config { 499 description 500 "Configuration options specifying parameters when the local 501 router is within an autonomous system which is part of a BGP 502 confederation."; 504 leaf enabled { 505 type boolean; 506 description 507 "When this leaf is set to true it indicates that 508 the local-AS is part of a BGP confederation"; 509 } 511 leaf identifier { 512 type inet:as-number; 513 description 514 "Confederation identifier for the autonomous system."; 515 } 517 leaf-list member-as { 518 type inet:as-number; 519 description 520 "Remote autonomous systems that are to be treated 521 as part of the local confederation."; 522 } 523 } 525 grouping bgp-neighbor_config { 526 description 527 "Neighbor level configuration items."; 529 leaf peer-as { 530 type inet:as-number; 531 description 532 "AS number of the peer."; 533 } 535 leaf local-as { 536 type inet:as-number; 537 description 538 "The local autonomous system number that is to be used 539 when establishing sessions with the remote peer or peer 540 group, if this differs from the global BGP router 541 autonomous system number."; 542 } 544 leaf peer-type { 545 type bgp-types:peer-type; 546 description 547 "Explicitly designate the peer or peer group as internal 548 (iBGP) or external (eBGP)."; 549 } 551 leaf auth-password { 552 type string; 553 description 554 "Configures an MD5 authentication password for use with 555 neighboring devices."; 556 } 558 leaf remove-private-as { 559 // could also make this a container with a flag to enable 560 // remove-private and separate option. here, option implies 561 // remove-private is enabled. 562 type bgp-types:remove-private-as-option; 563 description 564 "Remove private AS numbers from updates sent to peers."; 565 } 567 leaf route-flap-damping { 568 type boolean; 569 default false; 570 description 571 "Enable route flap damping."; 572 } 574 leaf send-community { 575 type bgp-types:community-type; 576 default "NONE"; 577 description 578 "Specify which types of community should be sent to the 579 neighbor or group. The default is to not send the 580 community attribute"; 581 } 583 leaf description { 584 type string; 585 description 586 "An optional textual description (intended primarily for use 587 with a peer or group"; 588 } 589 } 591 grouping bgp-neighbor-timers_config { 592 description 593 "Config parameters related to timers associated with the BGP 594 peer"; 596 leaf connect-retry { 597 type decimal64 { 598 fraction-digits 2; 599 } 600 default 30; 601 description 602 "Time interval in seconds between attempts to establish a 603 session with the peer."; 604 } 606 leaf hold-time { 607 type decimal64 { 608 fraction-digits 2; 609 } 610 default 90; 611 description 612 "Time interval in seconds that a BGP session will be 613 considered active in the absence of keepalive or other 614 messages from the peer. The hold-time is typically 615 set to 3x the keepalive-interval."; 616 reference 617 "RFC 4271 - A Border Gateway Protocol 4, Sec. 10"; 618 } 620 leaf keepalive-interval { 621 type decimal64 { 622 fraction-digits 2; 623 } 624 default 30; 625 description 626 "Time interval in seconds between transmission of keepalive 627 messages to the neighbor. Typically set to 1/3 the 628 hold-time."; 629 } 631 leaf minimum-advertisement-interval { 632 type decimal64 { 633 fraction-digits 2; 634 } 635 default 30; 636 description 637 "Minimum time which must elapse between subsequent UPDATE 638 messages relating to a common set of NLRI being transmitted 639 to a peer. This timer is referred to as 640 MinRouteAdvertisementIntervalTimer by RFC 4721 and serves to 641 reduce the number of UPDATE messages transmitted when a 642 particular set of NLRI exhibit instability."; 643 reference 644 "RFC 4271 - A Border Gateway Protocol 4, Sec 9.2.1.1"; 645 } 646 } 648 grouping bgp-neighbor-transport_config { 649 description 650 "Configuration parameters relating to the transport protocol 651 used by the BGP session to the peer"; 653 leaf tcp-mss { 654 type uint16; 655 description 656 "Sets the max segment size for BGP TCP sessions."; 657 } 659 leaf mtu-discovery { 660 type boolean; 661 default false; 662 description 663 "Turns path mtu discovery for BGP TCP sessions on (true) 664 or off (false)"; 665 } 667 leaf passive-mode { 668 type boolean; 669 default false; 670 description 671 "Wait for peers to issue requests to open a BGP session, 672 rather than initiating sessions from the local router."; 673 } 674 leaf local-address { 675 type union { 676 type inet:ip-address; 677 type string; 678 } 679 //TODO: the string should be converted to a leafref type 680 //to point to an interface when YANG 1.1 is available with 681 //leafrefs in union types. 682 description 683 "Set the local IP (either IPv4 or IPv6) address to use 684 for the session when sending BGP update messages. This 685 may be expressed as either an IP address or reference 686 to the name of an interface."; 687 } 688 } 690 grouping bgp-neighbor-error-handling_config { 691 description 692 "Configuration parameters relating to enhanced error handling 693 behaviours for BGP"; 695 leaf treat-as-withdraw { 696 type boolean; 697 default "false"; 698 description 699 "Specify whether erroneous UPDATE messages for which the 700 NLRI can be extracted are reated as though the NLRI is 701 withdrawn - avoiding session reset"; 702 reference "draft-ietf-idr-error-handling-16"; 703 } 704 } 706 grouping bgp-neighbor-logging-options_config { 707 description 708 "Configuration parameters specifying the logging behaviour for 709 BGP sessions to the peer"; 711 leaf log-neighbor-state-changes { 712 type boolean; 713 default "true"; 714 description 715 "Configure logging of peer state changes. Default is 716 to enable logging of peer state changes."; 717 } 718 } 720 grouping bgp-neighbor-multihop_config { 721 description 722 "Configuration parameters specifying the multihop behaviour for 723 BGP sessions to the peer"; 725 leaf enabled { 726 type boolean; 727 default "false"; 728 description 729 "When enabled the referenced group or neighbors are permitted 730 to be indirectly connected - including cases where the TTL 731 can be decremented between the BGP peers"; 732 } 734 leaf multihop-ttl { 735 type uint8; 736 description 737 "Time-to-live value to use when packets are sent to the 738 referenced group or neighbors and ebgp-multihop is enabled"; 739 } 740 } 742 grouping bgp-neighbor-route-reflector_config { 743 description 744 "Configuration parameters determining whether the behaviour of 745 the local system when acting as a route-reflector"; 747 leaf route-reflector-cluster-id { 748 type bgp-types:rr-cluster-id-type; 749 description 750 "route-reflector cluster id to use when local router is 751 configured as a route reflector. Commonly set at the group 752 level, but allows a different cluster 753 id to be set for each neighbor."; 754 } 756 leaf route-reflector-client { 757 type boolean; 758 default "false"; 759 description 760 "Configure the neighbor as a route reflector client."; 761 } 762 } 764 grouping bgp-neighbor-as-path-options_config { 765 description 766 "Configuration parameters allowing manipulation of the AS_PATH 767 attribute"; 769 leaf allow-own-as { 770 type uint8; 771 default 0; 772 description 773 "Specify the number of occurrences of the local BGP speaker's 774 AS that can occur within the AS_PATH before it is rejected."; 775 } 777 leaf replace-peer-as { 778 type boolean; 779 default "false"; 780 description 781 "Replace occurrences of the peer's AS in the AS_PATH 782 with the local autonomous system number"; 783 } 784 } 786 grouping bgp-neighbor-add-paths_config { 787 description 788 "Configuration parameters specfying whether the local system 789 will send or receive multiple paths using ADD_PATHS"; 791 leaf receive { 792 type boolean; 793 default false; 794 description 795 "Enable ability to receive multiple path advertisements 796 for an NLRI from the neighbor or group"; 797 } 799 leaf send-max { 800 type uint8; 801 description 802 "The maximum number of paths to advertise to neighbors 803 for a single NLRI"; 804 } 805 } 807 grouping bgp-neighbor-peer-group_config { 808 description 809 "Configuration parameters indicating whether the specified peer 810 is to be considered as part of a peer-group - and therefore 811 inherit its configuration"; 813 leaf peer-group { 814 type leafref { 815 // we are at /bgp/neighbors/neighbor/ 816 path "/bgp/peer-groups/peer-group/peer-group-name"; 817 require-instance true; 819 } 820 description 821 "The peer-group with which this neighbor is associated"; 822 } 823 } 825 grouping bgp-graceful-restart { 826 description 827 "Configures BGP graceful restart, which is a negotiated 828 option that indicates that a BGP speaker is able to retain 829 forwarding state when a BGP session restarts"; 831 reference "RFC 4724: Graceful Restart Mechanism for BGP"; 832 container graceful-restart { 833 description 834 "Parameters relating the graceful restart mechanism for BGP"; 835 container config { 836 description 837 "Configuration parameters relating to graceful-restart"; 838 uses bgp-neighbor-graceful-restart_config; 839 } 840 container state { 841 config false; 842 description 843 "State information associated with graceful-restart"; 844 uses bgp-neighbor-graceful-restart_config; 845 } 846 } 847 } 849 grouping bgp-neighbor-graceful-restart_config { 850 description 851 "Configuration parameters relating to BGP graceful restart."; 853 leaf enabled { 854 type boolean; 855 description 856 "Enable or disable the graceful-restart capability."; 857 } 859 leaf restart-time { 860 type uint16 { 861 range 0..4096; 862 } 863 description 864 "Estimated time (in seconds) for the local BGP speaker to 865 restart a session. This value is advertise in the graceful 866 restart BGP capability. This is a 12-bit value, referred to 867 as Restart Time in RFC4724. Per RFC4724, the suggested 868 default value is <= the hold-time value."; 869 } 871 leaf stale-routes-time { 872 type decimal64 { 873 fraction-digits 2; 874 } 875 description 876 "An upper-bound on the time thate stale routes will be 877 retained by a router after a session is restarted. If an 878 End-of-RIB (EOR) marker is received prior to this timer 879 expiring stale-routes will be flushed upon its receipt - if 880 no EOR is received, then when this timer expires stale paths 881 will be purged. This timer is referred to as the 882 Selection_Deferral_Timer in RFC4724"; 883 } 885 leaf helper-only { 886 type boolean; 887 description 888 "Enable graceful-restart in helper mode only. When this 889 leaf is set, the local system does not retain forwarding 890 its own state during a restart, but supports procedures 891 for the receiving speaker, as defined in RFC4724."; 892 } 893 } 895 // ************************************************************ 896 // * configuration context containers * 897 // ************************************************************ 899 grouping bgp-global-base { 900 description 901 "Global configuration parameters for the BGP router"; 903 container config { 904 description 905 "Configuration parameters relating to the global BGP router"; 906 uses bgp-global_config; 907 } 908 container state { 909 config false; 910 description 911 "State information relating to the global BGP router"; 912 uses bgp-global_config; 913 uses bgp-op:bgp-global_state; 914 } 915 uses bgp-mp:bgp-route-selection-options; 917 container default-route-distance { 918 description 919 "Administrative distance (or preference) assigned to 920 routes received from different sources 921 (external, internal, and local)."; 923 container config { 924 description 925 "Configuration parameters relating to the default route 926 distance"; 927 uses bgp-default-route-distance_config; 928 } 929 container state { 930 config false; 931 description 932 "State information relating to the default route distance"; 933 uses bgp-default-route-distance_config; 934 } 935 } 937 container confederation { 938 description 939 "Parameters indicating whether the local system acts as part 940 of a BGP confederation"; 942 container config { 943 description 944 "Configuration parameters relating to BGP confederations"; 945 uses bgp-confederation_config; 946 } 947 container state { 948 config false; 949 description 950 "State information relating to the BGP confederations"; 951 uses bgp-confederation_config; 952 } 953 } 955 uses bgp-mp:bgp-use-multiple-paths; 957 uses bgp-graceful-restart; 959 container afi-safis { 960 description 961 "Address family specific configuration"; 962 uses bgp-mp:bgp-common-afi-safi-list; 964 } 965 } 967 grouping bgp-neighbors { 968 description 969 "BGP neighbors configured on the local system"; 970 list neighbor { 971 key "neighbor-address"; 972 description 973 "List of BGP neighbors configured on the local system, 974 uniquely identified by peer IPv[46] address"; 976 leaf neighbor-address { 977 type leafref { 978 path "../config/neighbor-address"; 979 } 980 description 981 "Reference to the address of the BGP neighbor used as 982 a key in the neighbor list"; 983 } 985 uses bgp-neighbor-group; 986 } 987 } 989 grouping bgp-peer-group { 990 description 991 "BGP peer-groups configured on the local system"; 992 list peer-group { 993 key "peer-group-name"; 994 description 995 "List of BGP peer-groups configured on the local system - 996 uniquely identified by peer-group name"; 998 leaf peer-group-name { 999 type leafref { 1000 path "../config/peer-group-name"; 1001 } 1002 description 1003 "Reference to the name of the BGP peer-group used as a 1004 key in the peer-group list"; 1005 } 1007 uses bgp-neighbor-group; 1008 } 1009 } 1011 grouping bgp-neighbor-group { 1012 description 1013 "Parameters related to a BGP neighbor or group"; 1015 container config { 1016 description 1017 "Configuration parameters relating to the BGP neighbor or 1018 group"; 1019 uses bgp-neighbor_config; 1020 } 1021 container state { 1022 config false; 1023 description 1024 "State information relating to the BGP neighbor or group"; 1025 uses bgp-neighbor_config; 1026 } 1028 container timers { 1029 description 1030 "Timers related to a BGP neighbor or group"; 1031 container config { 1032 description 1033 "Configuration parameters relating to timers used for the 1034 BGP neighbor or group"; 1035 uses bgp-neighbor-timers_config; 1036 } 1037 container state { 1038 config false; 1039 description 1040 "State information relating to the timers used for the BGP 1041 neighbor or group"; 1042 uses bgp-neighbor-timers_config; 1043 } 1044 } 1046 container transport { 1047 description 1048 "Transport session parameters for the BGP neighbor or group"; 1049 container config { 1050 description 1051 "Configuration parameters relating to the transport 1052 session(s) used for the BGP neighbor or group"; 1053 uses bgp-neighbor-transport_config; 1054 } 1055 container state { 1056 config false; 1057 description 1058 "State information relating to the transport session(s) 1059 used for the BGP neighbor or group"; 1061 uses bgp-neighbor-transport_config; 1062 } 1063 } 1065 container error-handling { 1066 description 1067 "Error handling parameters used for the BGP neighbor or 1068 group"; 1069 container config { 1070 description 1071 "Configuration parameters enabling or modifying the 1072 behavior or enhanced error handling mechanisms for the BGP 1073 neighbor or group"; 1074 uses bgp-neighbor-error-handling_config; 1075 } 1076 container state { 1077 config false; 1078 description 1079 "State information relating to enhanced error handling 1080 mechanisms for the BGP neighbor or group"; 1081 uses bgp-neighbor-error-handling_config; 1082 } 1083 } 1085 container logging-options { 1086 description 1087 "Logging options for events related to the BGP neighbor or 1088 group"; 1089 container config { 1090 description 1091 "Configuration parameters enabling or modifying logging 1092 for events relating to the BGP neighbor or group"; 1093 uses bgp-neighbor-logging-options_config; 1094 } 1095 container state { 1096 config false; 1097 description 1098 "State information relating to logging for the BGP neighbor 1099 or group"; 1100 uses bgp-neighbor-logging-options_config; 1101 } 1102 } 1104 container ebgp-multihop { 1105 description 1106 "eBGP multi-hop parameters for the BGP neighbor or group"; 1107 container config { 1108 description 1109 "Configuration parameters relating to eBGP multihop for the 1110 BGP neighbor or group"; 1111 uses bgp-neighbor-multihop_config; 1112 } 1113 container state { 1114 config false; 1115 description 1116 "State information for eBGP multihop, for the BGP neighbor 1117 or group"; 1118 uses bgp-neighbor-multihop_config; 1119 } 1120 } 1122 container route-reflector { 1123 description 1124 "Route reflector parameters for the BGP neighbor or group"; 1125 container config { 1126 description 1127 "Configuraton parameters relating to route reflection 1128 for the BGP neighbor or group"; 1129 uses bgp-neighbor-route-reflector_config; 1130 } 1131 container state { 1132 config false; 1133 description 1134 "State information relating to route reflection for the 1135 BGP neighbor or group"; 1136 uses bgp-neighbor-route-reflector_config; 1137 } 1138 } 1140 container as-path-options { 1141 description 1142 "AS_PATH manipulation parameters for the BGP neighbor or 1143 group"; 1144 container config { 1145 description 1146 "Configuration parameters relating to AS_PATH manipulation 1147 for the BGP peer or group"; 1148 uses bgp-neighbor-as-path-options_config; 1149 } 1150 container state { 1151 config false; 1152 description 1153 "State information relating to the AS_PATH manipulation 1154 mechanisms for the BGP peer or group"; 1155 uses bgp-neighbor-as-path-options_config; 1156 } 1158 } 1160 container add-paths { 1161 description 1162 "Parameters relating to the advertisement and receipt of 1163 multiple paths for a single NLRI (add-paths)"; 1164 container config { 1165 description 1166 "Configuration parameters relating to ADD_PATHS"; 1167 uses bgp-neighbor-add-paths_config; 1168 } 1169 container state { 1170 config false; 1171 description 1172 "State information associated with ADD_PATHS"; 1173 uses bgp-neighbor-add-paths_config; 1174 } 1175 } 1177 container afi-safis { 1178 description 1179 "Per-address-family configuration parameters associated with 1180 the neighbor or group"; 1181 uses bgp-mp:bgp-common-afi-safi-list; 1182 } 1184 uses bgp-graceful-restart; 1186 uses rpol:apply-policy-group; 1187 } 1189 grouping bgp-neighbor-neighbor-address_config { 1190 description 1191 "Configuration options relating to the BGP neighbor address"; 1193 leaf neighbor-address { 1194 type inet:ip-address; 1195 description 1196 "Address of the BGP peer, either in IPv4 or IPv6"; 1197 } 1198 } 1200 grouping bgp-peer-group-peer-group-name_config { 1201 description 1202 "Configuration options relating to the BGP peer-group name"; 1204 leaf peer-group-name { 1205 type string; 1206 description 1207 "Name of the BGP peer-group"; 1208 } 1209 } 1211 // add peer-group pointer only for the neighbor list 1212 augment /bgp/neighbors/neighbor/config { 1213 description 1214 "Augmentation to allow association of a neighbor with a 1215 peer-group"; 1216 uses bgp-neighbor-peer-group_config; 1217 } 1219 augment /bgp/neighbors/neighbor/state { 1220 description 1221 "Augmentation to reflect the association of a neighbor with a 1222 peer-group"; 1223 uses bgp-neighbor-peer-group_config; 1224 } 1226 augment /bgp/peer-groups/peer-group { 1227 description 1228 "Augmentation to add multipath configuration to a peer-group"; 1229 uses bgp-mp:bgp-use-multiple-paths; 1230 } 1232 augment /bgp/neighbors/neighbor { 1233 description 1234 "Augmentation to add the multipath configuration to a 1235 neighbor"; 1236 uses bgp-mp:bgp-use-multiple-paths-neighbor; 1237 } 1239 augment /bgp/peer-groups/peer-group/afi-safis/afi-safi { 1240 description 1241 "Augmentation to add multipath configuration to a peer-group 1242 on a per-AFI-SAFI basis"; 1243 uses bgp-mp:bgp-use-multiple-paths; 1244 } 1246 augment /bgp/neighbors/neighbor/afi-safis/afi-safi { 1247 description 1248 "Augmentation to add multipath configuration to a neighbor 1249 on a per-AFI-SAFI basis"; 1250 uses bgp-mp:bgp-use-multiple-paths-neighbor; 1251 } 1253 augment /bgp/global/afi-safis/afi-safi { 1254 description 1255 "Augmentation to add global instance specific AFI-SAFI 1256 configuration information"; 1257 uses bgp-mp:bgp-global-afi-safi; 1258 uses bgp-mp:bgp-use-multiple-paths; 1259 } 1261 augment /bgp/peer-groups/peer-group/afi-safis/afi-safi { 1262 description 1263 "Augmentation that adds peer-group instance specific 1264 AFI-SAFI configuration information"; 1265 uses bgp-mp:bgp-group-afi-safi; 1266 } 1268 augment /bgp/neighbors/neighbor/config { 1269 description 1270 "Augmentation adding the neighbor address to the 1271 neighbor configuration container"; 1272 uses bgp-neighbor-neighbor-address_config; 1273 } 1275 augment /bgp/neighbors/neighbor/state { 1276 description 1277 "Augmentation adding the neighbor address to the 1278 neighbor state container"; 1279 uses bgp-neighbor-neighbor-address_config; 1280 } 1282 augment /bgp/peer-groups/peer-group/config { 1283 description 1284 "Augmentation adding the peer-group name to the 1285 peer-group configuration container"; 1286 uses bgp-peer-group-peer-group-name_config; 1287 } 1289 augment /bgp/peer-groups/peer-group/state { 1290 description 1291 "Augmentation adding the peer-group name to the 1292 peer-group state container"; 1293 uses bgp-peer-group-peer-group-name_config; 1294 } 1296 // ************************************************************ 1297 // * Augmentations to add state * 1298 // * (rjs: cleaner to have these in the base module to avoid * 1299 // needing to specify which module - e.g. augment of * 1300 // /bgp:bgp/bgp:neighbors/bgp:neighbor...) * 1301 // ************************************************************ 1302 augment /bgp/neighbors/neighbor/state { 1303 description 1304 "Augmentation to add operational state related to a particular 1305 BGP neighbor"; 1306 uses bgp-op:bgp-neighbor_state; 1307 } 1309 augment /bgp/neighbors/bgp:neighbor/state { 1310 description 1311 "Augmentation to add operational state related to a particular 1312 BGP neighbor"; 1314 container messages { 1315 description 1316 "Counters for BGP messages sent and received from the 1317 neighbor"; 1318 container sent { 1319 description 1320 "Counters relating to BGP messages sent to the neighbor"; 1321 uses bgp-op:bgp-neighbor-message-counters-sent_state; 1322 } 1324 container received { 1325 description 1326 "Counters for BGP messages received from the neighbor"; 1327 uses bgp-op:bgp-neighbor-message-counters-received_state; 1328 } 1329 } 1331 container queues { 1332 description 1333 "Counters related to queued messages associated with the 1334 BGP neighbor"; 1335 uses bgp-op:bgp-neighbor-queue-counters_state; 1336 } 1337 } 1339 augment /bgp:bgp/bgp:neighbors/neighbor/timers/state { 1340 description 1341 "Augmentation to add the operational state of timers associated 1342 with the BGP neighbor"; 1343 uses bgp-op:bgp-neighbor-timers_state; 1344 } 1346 augment /bgp/neighbors/neighbor/transport/state { 1347 description 1348 "Augmentation to add the operational state of the transport 1349 session associated with the BGP neighbor"; 1351 uses bgp-op:bgp-neighbor-transport_state; 1352 } 1354 augment /bgp/neighbors/neighbor/error-handling/state { 1355 description 1356 "Augmentation to add the operational state of the error 1357 handling associated with the BGP neighbor"; 1358 uses bgp-op:bgp-neighbor-error-handling_state; 1359 } 1361 augment /bgp/neighbors/neighbor/graceful-restart/state { 1362 description 1363 "Augmentation to add the operational state of graceful-restart 1364 associated with a BGP neighbor"; 1365 uses bgp-op:bgp-afi-safi-graceful-restart_state; 1366 } 1368 augment /bgp/peer-groups/peer-group/state { 1369 description 1370 "Augmentation to add the operational state and counters 1371 relating to a BGP peer-group"; 1372 uses bgp-op:bgp-peer-group_state; 1373 } 1375 augment /bgp/global/afi-safis/afi-safi/state { 1376 description 1377 "Augmentation to add operational state and counters 1378 on a per-AFI-SAFI basis to the global BGP router"; 1379 uses bgp-op:bgp-global-afi-safi_state; 1380 } 1382 augment /bgp/neighbors/neighbor/afi-safis/afi-safi/state { 1383 description 1384 "Augmentation to add per-AFI-SAFI operational state 1385 and counters to the BGP neighbor"; 1386 uses bgp-op:bgp-neighbor-afi-safi_state; 1387 } 1389 augment "/bgp/neighbors/neighbor/afi-safis/afi-safi/" + 1390 "graceful-restart/state" { 1391 description 1392 "Augmentation to add per-AFI-SAFI operational state for BGP 1393 graceful-restart"; 1394 uses bgp-op:bgp-neighbor-afi-safi-graceful-restart_state; 1395 } 1397 // ************************************************************ 1398 // * module structure containers * 1399 // ************************************************************ 1401 container bgp { 1402 presence "Container for BGP protocol hierarchy"; 1403 description 1404 "Top-level configuration and state for the BGP router"; 1406 container global { 1407 description 1408 "Global configuration for the BGP router"; 1409 uses bgp-global-base; 1410 uses rpol:apply-policy-group; 1411 } 1413 container neighbors { 1414 description 1415 "Configuration for BGP neighbors"; 1416 uses bgp-neighbors; 1417 } 1419 container peer-groups { 1420 description 1421 "Configuration for BGP peer-groups"; 1422 uses bgp-peer-group; 1423 } 1424 } 1425 } 1426 1428 6.2. BGP base types 1430 file bgp-types.yang 1431 module bgp-types { 1432 yang-version "1"; 1434 namespace "http://openconfig.net/yang/bgp-types"; 1436 prefix "bgp-types"; 1438 import ietf-inet-types { prefix inet; } 1440 // meta 1441 organization 1442 "OpenConfig working group"; 1444 contact 1445 "OpenConfig working group 1446 netopenconfig@googlegroups.com"; 1448 description 1449 "This module contains general data definitions for use in BGP 1450 policy. It can be imported by modules that make use of BGP 1451 attributes"; 1453 revision "2015-05-15" { 1454 description "Initial revision"; 1455 reference "TBD"; 1456 } 1458 identity bgp-capability { 1459 description "Base identity for a BGP capability"; 1460 } 1462 identity MPBGP { 1463 base "bgp-capability"; 1464 description 1465 "Multi-protocol extensions to BGP"; 1466 reference "RFC2858"; 1467 } 1469 identity ROUTE-REFRESH { 1470 base "bgp-capability"; 1471 description 1472 "The BGP route-refresh functionality"; 1473 reference "RFC2918"; 1474 } 1476 identity ASN32 { 1477 base "bgp-capability"; 1478 description 1479 "4-byte (32-bit) AS number functionality"; 1480 reference "RFC6793"; 1481 } 1483 identity GRACEFUL-RESTART { 1484 base "bgp-capability"; 1485 description 1486 "Graceful restart functionality"; 1487 reference "RFC4724"; 1488 } 1490 identity ADD-PATHS { 1491 base "bgp-capability"; 1492 description 1493 "BGP add-paths"; 1494 reference "draft-ietf-idr-add-paths"; 1495 } 1497 identity afi-safi-type { 1498 description 1499 "Base identity type for AFI,SAFI tuples for BGP-4"; 1500 reference "RFC4760 - multiprotocol extensions for BGP-4"; 1501 } 1503 identity ipv4-unicast { 1504 base afi-safi-type; 1505 description 1506 "IPv4 unicast (AFI,SAFI = 1,1)"; 1507 reference "RFC4760"; 1508 } 1510 identity ipv6-unicast { 1511 base afi-safi-type; 1512 description 1513 "IPv6 unicast (AFI,SAFI = 2,1)"; 1514 reference "RFC4760"; 1515 } 1517 identity ipv4-labelled-unicast { 1518 base afi-safi-type; 1519 description 1520 "Labelled IPv4 unicast (AFI,SAFI = 1,4)"; 1521 reference "RFC3107"; 1522 } 1524 identity ipv6-labelled-unicast { 1525 base afi-safi-type; 1526 description 1527 "Labelled IPv6 unicast (AFI,SAFI = 2,4)"; 1528 reference "RFC3107"; 1529 } 1531 identity l3vpn-ipv4-unicast { 1532 base afi-safi-type; 1533 description 1534 "Unicast IPv4 MPLS L3VPN (AFI,SAFI = 1,128)"; 1535 reference "RFC4364"; 1536 } 1538 identity l3vpn-ipv6-unicast { 1539 base afi-safi-type; 1540 description 1541 "Unicast IPv6 MPLS L3VPN (AFI,SAFI = 2,128)"; 1542 reference "RFC4659"; 1543 } 1545 identity l3vpn-ipv4-multicast { 1546 base afi-safi-type; 1547 description 1548 "Multicast IPv4 MPLS L3VPN (AFI,SAFI = 1,129)"; 1549 reference "RFC6514"; 1550 } 1552 identity l3vpn-ipv6-multicast { 1553 base afi-safi-type; 1554 description 1555 "Multicast IPv6 MPLS L3VPN (AFI,SAFI = 2,129)"; 1556 reference "RFC6514"; 1557 } 1559 identity l2vpn-vpls { 1560 base afi-safi-type; 1561 description 1562 "BGP-signalled VPLS (AFI,SAFI = 25,65)"; 1563 reference "RFC4761"; 1564 } 1566 identity l2vpn-evpn { 1567 base afi-safi-type; 1568 description 1569 "BGP MPLS Based Ethernet VPN (AFI,SAFI = 25,70)"; 1570 } 1572 identity bgp-well-known-std-community { 1573 description 1574 "Reserved communities within the standard community space 1575 defined by RFC1997. These communities must fall within the 1576 range 0x00000000 to 0xFFFFFFFF"; 1577 reference "RFC1997"; 1578 } 1580 identity NO_EXPORT { 1581 base bgp-well-known-std-community; 1582 description 1583 "Do not export NLRI received carrying this community outside 1584 the bounds of this autonomous system, or this confederation if 1585 the local autonomous system is a confederation member AS. This 1586 community has a value of 0xFFFFFF01."; 1587 reference "RFC1997"; 1588 } 1589 identity NO_ADVERTISE { 1590 base bgp-well-known-std-community; 1591 description 1592 "All NLRI received carrying this community must not be 1593 advertised to other BGP peers. This community has a value of 1594 0xFFFFFF02."; 1595 reference "RFC1997"; 1596 } 1598 identity NO_EXPORT_SUBCONFED { 1599 base bgp-well-known-std-community; 1600 description 1601 "All NLRI received carrying this community must not be 1602 advertised to external BGP peers - including over confederation 1603 sub-AS boundaries. This community has a value of 0xFFFFFF03."; 1604 reference "RFC1997"; 1605 } 1607 identity NOPEER { 1608 base bgp-well-known-std-community; 1609 description 1610 "An autonomous system receiving NLRI tagged with this community 1611 is advised not to readvertise the NLRI to external bi-lateral 1612 peer autonomous systems. An AS may also filter received NLRI 1613 from bilateral peer sessions when they are tagged with this 1614 community value"; 1615 reference "RFC3765"; 1616 } 1618 identity INTERNET { 1619 base bgp-well-known-std-community; 1620 description 1621 "A community used by some implementations with the value 0:0 1622 which represents all possible community values."; 1623 } 1625 typedef bgp-session-direction { 1626 type enumeration { 1627 enum INBOUND { 1628 description 1629 "Refers to all NLRI received from the BGP peer"; 1630 } 1631 enum OUTBOUND { 1632 description 1633 "Refers to all NLRI advertised to the BGP peer"; 1634 } 1635 } 1636 description 1637 "Type to describe the direction of NLRI transmission"; 1638 } 1640 typedef bgp-well-known-community-type { 1641 type identityref { 1642 base bgp-well-known-std-community; 1643 } 1644 description 1645 "Type definition for well-known IETF community attribute 1646 values"; 1647 reference 1648 "IANA Border Gateway Protocol (BGP) Well Known Communities"; 1649 } 1651 typedef bgp-std-community-type { 1652 // TODO: further refine restrictions and allowed patterns 1653 // 4-octet value: 1654 // 2 octets 1655 // 2 octets 1656 type union { 1657 type uint32 { 1658 // per RFC 1997, 0x00000000 - 0x0000FFFF and 0xFFFF0000 - 1659 // 0xFFFFFFFF are reserved 1660 range "65536..4294901759"; // 0x00010000..0xFFFEFFFF 1661 } 1662 type string { 1663 pattern '([0-9]+:[0-9]+)'; 1664 } 1665 } 1666 description 1667 "Type definition for standard commmunity attributes"; 1668 reference "RFC 1997 - BGP Communities Attribute"; 1669 } 1671 typedef bgp-ext-community-type { 1672 // TODO: needs more work to make this more precise given the 1673 // variability of extended community attribute specifications 1674 // 8-octet value: 1675 // 2 octects 1676 // 6 octets 1677 type string { 1678 pattern '([0-9\.]+(:[0-9]+)?:[0-9]+)'; 1679 } 1680 description 1681 "Type definition for extended community attributes"; 1682 reference "RFC 4360 - BGP Extended Communities Attribute"; 1683 } 1684 typedef bgp-community-regexp-type { 1685 // TODO: needs more work to decide what format these regexps can 1686 // take. 1687 type string; 1688 description 1689 "Type definition for communities specified as regular 1690 expression patterns"; 1691 } 1693 typedef bgp-origin-attr-type { 1694 type enumeration { 1695 enum IGP { 1696 description "Origin of the NLRI is internal"; 1697 } 1698 enum EGP { 1699 description "Origin of the NLRI is EGP"; 1700 } 1701 enum INCOMPLETE { 1702 description "Origin of the NLRI is neither IGP or EGP"; 1703 } 1704 } 1705 description 1706 "Type definition for standard BGP origin attribute"; 1707 reference "RFC 4271 - A Border Gateway Protocol 4 (BGP-4), 1708 Sec 4.3"; 1709 } 1711 typedef peer-type { 1712 type enumeration { 1713 enum INTERNAL { 1714 description "internal (iBGP) peer"; 1715 } 1716 enum EXTERNAL { 1717 description "external (eBGP) peer"; 1718 } 1719 } 1720 description 1721 "labels a peer or peer group as explicitly internal or 1722 external"; 1723 } 1725 typedef remove-private-as-option { 1726 type enumeration { 1727 enum ALL { 1728 description "remove all private ASes in the path"; 1729 } 1730 enum REPLACE { 1731 description "replace private ASes with local AS"; 1732 } 1733 } 1734 description 1735 "set of options for configuring how private AS path numbers 1736 are removed from advertisements"; 1737 } 1739 typedef percentage { 1740 type uint8 { 1741 range "0..100"; 1742 } 1743 description 1744 "Integer indicating a percentage value"; 1745 } 1747 typedef rr-cluster-id-type { 1748 type union { 1749 type uint32; 1750 type inet:ipv4-address; 1751 } 1752 description 1753 "union type for route reflector cluster ids: 1754 option 1: 4-byte number 1755 option 2: IP address"; 1756 } 1758 typedef community-type { 1759 type enumeration { 1760 enum STANDARD { 1761 description "send only standard communities"; 1762 } 1763 enum EXTENDED { 1764 description "send only extended communities"; 1765 } 1766 enum BOTH { 1767 description "send both standard and extended communities"; 1768 } 1769 enum NONE { 1770 description "do not send any community attribute"; 1771 } 1772 } 1773 description 1774 "type describing variations of community attributes: 1775 STANDARD: standard BGP community [rfc1997] 1776 EXTENDED: extended BGP community [rfc4360] 1777 BOTH: both standard and extended community"; 1778 } 1780 } 1781 1783 6.3. BGP policy items 1785 file bgp-policy.yang 1786 module bgp-policy { 1788 yang-version "1"; 1790 // namespace 1791 namespace "http://openconfig.net/yang/bgp-policy"; 1793 prefix "bgp-pol"; 1795 // import some basic types 1796 import ietf-inet-types { prefix inet; } 1797 import routing-policy {prefix rpol; } 1798 import policy-types { prefix pt; } 1799 import bgp-types { prefix bgp-types; } 1801 // meta 1802 organization 1803 "OpenConfig working group"; 1805 contact 1806 "OpenConfig working group 1807 netopenconfig@googlegroups.com"; 1809 description 1810 "This module contains data definitions for BGP routing policy. 1811 It augments the base routing-policy module with BGP-specific 1812 options for conditions and actions."; 1814 revision "2015-05-15" { 1815 description 1816 "Updated model to augment base routing-policy module"; 1817 reference "TBD"; 1818 } 1820 // extension statements 1822 // feature statements 1824 // identity statements 1825 // typedef statements 1827 typedef bgp-as-path-prepend-repeat { 1828 type uint8; 1829 description 1830 "Option for the BGP as-prepend policy action. Prepends the 1831 local AS number repeated n times"; 1832 } 1834 typedef bgp-set-community-option-type { 1835 type enumeration { 1836 enum ADD { 1837 description 1838 "add the specified communities to the existing 1839 community attribute"; 1840 } 1841 enum REMOVE { 1842 description 1843 "remove the specified communities from the 1844 existing community attribute"; 1845 } 1846 enum REPLACE { 1847 description 1848 "replace the existing community attribute with 1849 the specified communities. If an empty set is 1850 specified, this removes the community attribute 1851 from the route."; 1852 } 1853 } 1854 description 1855 "Type definition for options when setting the community 1856 attribute in a policy action"; 1857 } 1859 typedef bgp-next-hop-type { 1860 type union { 1861 type inet:ip-address; 1862 type enumeration { 1863 enum SELF { 1864 description "special designation for local router's own 1865 address, i.e., next-hop-self"; 1866 } 1867 } 1868 } 1869 description 1870 "type definition for specifying next-hop in policy actions"; 1871 } 1872 typedef bgp-set-med-type { 1873 type union { 1874 type uint32; 1875 type string { 1876 pattern "^[+-][0-9]+"; 1877 } 1878 type enumeration { 1879 enum IGP { 1880 description "set the MED value to the IGP cost toward the 1881 next hop for the route"; 1882 } 1883 } 1884 } 1885 description 1886 "Type definition for specifying how the BGP MED can 1887 be set in BGP policy actions. The three choices are to set 1888 the MED directly, increment/decrement using +/- notation, 1889 and setting it to the IGP cost (predefined value)."; 1890 } 1892 // grouping statements 1894 grouping bgp-match-conditions { 1895 description 1896 "Condition statement definitions for checking membership in a 1897 defined set"; 1899 container match-community-set { 1900 presence 1901 "The presence of this container indicates that the routes 1902 should match the referenced community-set"; 1904 description 1905 "Match a referenced community-set according to the logic 1906 defined in the match-set-options leaf"; 1908 leaf community-set { 1909 type leafref { 1910 path "/rpol:routing-policy/rpol:defined-sets/" + 1911 "bgp-pol:bgp-defined-sets/bgp-pol:community-sets/" + 1912 "bgp-pol:community-set/bgp-pol:community-set-name"; 1913 require-instance true; 1914 } 1915 description 1916 "References a defined community set"; 1917 } 1918 uses rpol:match-set-options-group; 1919 } 1920 container match-ext-community-set { 1921 presence 1922 "The presence of this container indicates that the routes 1923 should match the referenced extended community set"; 1925 description 1926 "Match a referenced extended community-set according to the 1927 logic defined in the match-set-options leaf"; 1929 leaf ext-community-set { 1930 type leafref { 1931 path "/rpol:routing-policy/rpol:defined-sets/" + 1932 "bgp-pol:bgp-defined-sets/bgp-pol:ext-community-sets/" + 1933 "bgp-pol:ext-community-set/" + 1934 "bgp-pol:ext-community-set-name"; 1935 require-instance true; 1936 } 1937 description "References a defined extended community set"; 1938 } 1939 uses rpol:match-set-options-group; 1940 } 1942 container match-as-path-set { 1943 presence 1944 "The presence of this container indicates that the route 1945 should match the referenced as-path set"; 1947 description 1948 "Match a referenced as-path set according to the logic 1949 defined in the match-set-options leaf"; 1951 leaf as-path-set { 1952 type leafref { 1953 path "/rpol:routing-policy/rpol:defined-sets/" + 1954 "bgp-pol:bgp-defined-sets/bgp-pol:as-path-sets/" + 1955 "bgp-pol:as-path-set/bgp-pol:as-path-set-name"; 1956 require-instance true; 1957 } 1958 description "References a defined AS path set"; 1959 } 1960 uses rpol:match-set-options-group; 1961 } 1962 } 1964 grouping bgp-attribute-conditions { 1965 description 1966 "Condition statement definitions for comparing a BGP route 1967 attribute to a specified value"; 1969 leaf med-eq { 1970 type uint32; 1971 description 1972 "Condition to check if the received MED value is equal to 1973 the specified value"; 1974 } 1976 leaf origin-eq { 1977 type bgp-types:bgp-origin-attr-type; 1978 description 1979 "Condition to check if the route origin is equal to the 1980 specified value"; 1981 } 1983 leaf-list next-hop-in { 1984 type inet:ip-address; 1985 description 1986 "List of next hop addresses to check for in the route 1987 update"; 1988 } 1990 leaf local-pref-eq { 1991 type uint32; 1992 // TODO: add support for other comparisons if needed 1993 description 1994 "Condition to check if the local pref attribute is equal to 1995 the specified value"; 1996 } 1998 container community-count { 2000 presence "node is present in the config data to indicate a 2001 community-count condition"; 2003 description 2004 "Value and comparison operations for conditions based on the 2005 number of communities in the route update"; 2007 uses pt:attribute-compare-operators; 2009 } 2011 container as-path-length { 2013 presence "node is present in the config data to indicate a 2014 as-path-length condition"; 2016 description 2017 "Value and comparison operations for conditions based on the 2018 length of the AS path in the route update"; 2020 uses pt:attribute-compare-operators; 2021 } 2023 leaf route-type { 2024 // TODO: verify extent of vendor support for this comparison 2025 type enumeration { 2026 enum INTERNAL { 2027 description "route type is internal"; 2028 } 2029 enum EXTERNAL { 2030 description "route type is external"; 2031 } 2032 } 2033 description 2034 "Condition to check the route type in the route update"; 2035 } 2036 } 2038 // augment statements 2040 augment "/rpol:routing-policy/rpol:defined-sets" { 2041 description "adds BGP defined sets container to routing policy 2042 model"; 2044 container bgp-defined-sets { 2045 description 2046 "BGP-related set definitions for policy match conditions"; 2048 container community-sets { 2049 description 2050 "Enclosing container for community sets"; 2052 list community-set { 2053 key community-set-name; 2054 description 2055 "Definitions for community sets"; 2057 leaf community-set-name { 2058 type string; 2059 mandatory true; 2060 description 2061 "name / label of the community set -- this is used to 2062 reference the set in match conditions"; 2063 } 2064 leaf-list community-member { 2065 type union { 2066 type bgp-types:bgp-std-community-type; 2067 type bgp-types:bgp-community-regexp-type; 2068 type bgp-types:bgp-well-known-community-type; 2069 } 2070 description 2071 "members of the community set"; 2072 } 2073 } 2074 } 2076 container ext-community-sets { 2077 description 2078 "Enclosing container for extended community sets"; 2080 list ext-community-set { 2081 key ext-community-set-name; 2082 description 2083 "Definitions for extended community sets"; 2085 leaf ext-community-set-name { 2086 type string; 2087 description 2088 "name / label of the extended community set -- this is 2089 used to reference the set in match conditions"; 2090 } 2092 leaf-list ext-community-member { 2093 type union { 2094 type bgp-types:bgp-ext-community-type; 2095 // TODO: is regexp support needed for extended 2096 // communities? 2097 type bgp-types:bgp-community-regexp-type; 2098 } 2099 description 2100 "members of the extended community set"; 2101 } 2102 } 2103 } 2105 container as-path-sets { 2106 description 2107 "Enclosing container for AS path sets"; 2109 list as-path-set { 2110 key as-path-set-name; 2111 description 2112 "Definitions for AS path sets"; 2114 leaf as-path-set-name { 2115 type string; 2116 description 2117 "name of the AS path set -- this is used to reference 2118 the set in match conditions"; 2119 } 2121 leaf-list as-path-set-member { 2122 // TODO: need to refine typedef for AS path expressions 2123 type string; 2124 description 2125 "AS path expression -- list of ASes in the set"; 2126 } 2127 } 2128 } 2129 } 2130 } 2132 augment "/rpol:routing-policy/rpol:policy-definitions/" + 2133 "rpol:policy-definition/rpol:statements/rpol:statement/" + 2134 "rpol:conditions" { 2135 description "BGP policy conditions added to routing policy 2136 module"; 2138 container bgp-conditions { 2139 description "Policy conditions for matching 2140 BGP-specific defined sets or comparing BGP-specific 2141 attributes"; 2143 uses bgp-match-conditions; 2144 uses bgp-attribute-conditions; 2145 } 2146 } 2148 augment "/rpol:routing-policy/rpol:policy-definitions/" + 2149 "rpol:policy-definition/rpol:statements/rpol:statement/" + 2150 "rpol:actions" { 2151 description "BGP policy actions added to routing policy 2152 module"; 2154 container bgp-actions { 2155 description 2156 "Definitions for policy action statements that 2157 change BGP-specific attributes of the route"; 2159 container set-as-path-prepend { 2160 presence "node is present in the config data to use the AS 2161 prepend action"; 2162 description 2163 "action to prepend local AS number to the AS-path a 2164 specified number of times"; 2166 leaf repeat-n { 2167 type uint8; 2168 description "number of times to prepend the local AS 2169 number"; 2170 } 2171 } 2173 container set-community { 2174 presence "node is present in the config data when 2175 set-community action is used"; 2176 description 2177 "action to set the community attributes of the route, along 2178 with options to modify how the community is modified"; 2180 choice set-community-method { 2181 description 2182 "Option to set communities using an inline list or 2183 reference to an existing defined set."; 2185 case inline { 2186 leaf-list communities { 2187 type union { 2188 type bgp-types:bgp-std-community-type; 2189 type bgp-types:bgp-well-known-community-type; 2190 } 2191 description 2192 "Set the community values for the update inline with 2193 a list."; 2194 } 2195 } 2196 case reference { 2197 leaf community-set-ref { 2198 type leafref { 2199 path "/rpol:routing-policy/rpol:defined-sets/" + 2200 "bgp-pol:bgp-defined-sets/" + 2201 "bgp-pol:community-sets/bgp-pol:community-set/" + 2202 "bgp-pol:community-set-name"; 2203 require-instance true; 2204 } 2205 description 2206 "References a defined community set by name"; 2207 } 2209 } 2210 } 2211 leaf options { 2212 type bgp-set-community-option-type; 2213 description 2214 "Options for modifying the community attribute with 2215 the specified values. These options apply to both 2216 methods of setting the community attribute."; 2217 } 2218 } 2220 container set-ext-community { 2222 presence "node is present in the config data when 2223 set-community action is used"; 2224 description 2225 "Action to set the extended community attributes of the 2226 route, along with options to modify how the community is 2227 modified"; 2229 choice set-ext-community-method { 2230 description 2231 "Option to set communities using an inline list or 2232 reference to an existing defined set."; 2234 case inline { 2235 leaf-list communities { 2236 type union { 2237 type bgp-types:bgp-ext-community-type; 2238 type bgp-types:bgp-well-known-community-type; 2239 } 2240 description 2241 "Set the community values for the update inline with 2242 a list."; 2243 } 2244 } 2245 case reference { 2246 leaf ext-community-set-ref { 2247 type leafref { 2248 path "/rpol:routing-policy/rpol:defined-sets/" + 2249 "bgp-pol:bgp-defined-sets/" + 2250 "bgp-pol:ext-community-sets/" + 2251 "bgp-pol:ext-community-set/" + 2252 "bgp-pol:ext-community-set-name"; 2253 require-instance true; 2254 } 2255 description 2256 "References a defined extended community set by 2257 name"; 2258 } 2259 } 2260 } 2261 leaf options { 2262 type bgp-set-community-option-type; 2263 description 2264 "options for modifying the extended community 2265 attribute with the specified values. These options 2266 apply to both methods of setting the community 2267 attribute."; 2268 } 2269 } 2271 leaf set-route-origin { 2272 type bgp-types:bgp-origin-attr-type; 2273 description "set the origin attribute to the specified 2274 value"; 2275 } 2277 leaf set-local-pref { 2278 type uint32; 2279 description "set the local pref attribute on the route 2280 update"; 2281 } 2283 leaf set-next-hop { 2284 type bgp-next-hop-type; 2285 description "set the next-hop attribute in the route update"; 2286 } 2288 leaf set-med { 2289 type bgp-set-med-type; 2290 description "set the med metric attribute in the route 2291 update"; 2292 } 2293 } 2294 } 2296 // rpc statements 2298 // notification statements 2299 } 2300 2302 6.4. BGP multiprotocol items 2304 file bgp-multiprotocol.yang 2305 module bgp-multiprotocol { 2307 yang-version "1"; 2309 // namespace 2310 namespace "http://openconfig.net/yang/bgp-multiprotocol"; 2312 prefix "bgp-mp"; 2314 // import some basic inet types 2315 import routing-policy { prefix rpol; } 2316 import bgp-types { prefix bgp-types; } 2317 import bgp-operational { prefix bgp-op; } 2319 // meta 2320 organization 2321 "OpenConfig working group"; 2323 contact 2324 "OpenConfig working group 2325 netopenconfig@googlegroups.com"; 2327 description 2328 "This module is part of a YANG model for BGP protocol 2329 configuration, focusing on configuration of multiprotocol 2330 BGP, in particular various relevant address families (AFI) and 2331 sub-address families (SAFI). 2333 Identities (rather than enumerated types) are used to identify 2334 each AFI / SAFI type to make it easier for users to extend to 2335 pre-standard or custom AFI/SAFI types. This module is only 2336 intended to capture the most"; 2338 revision "2015-05-15" { 2339 description 2340 "Refactored multiprotocol module"; 2341 reference "TBD"; 2342 } 2344 grouping ipv4-unicast-group { 2345 description 2346 "Group for IPv4 Unicast configuration options"; 2348 container ipv4-unicast { 2349 when "../afi-safi-name = 'bgp-mp:ipv4-unicast'" { 2350 description 2351 "Include this container for IPv4 Unicast specific 2352 configuration"; 2353 } 2355 description "IPv4 unicast configuration options"; 2357 // include common IPv[46] unicast options 2358 uses ipv4-ipv6-unicast-common; 2360 // placeholder for IPv4 unicast specific configuration 2361 } 2362 } 2364 grouping ipv6-unicast-group { 2365 description 2366 "Group for IPv6 Unicast configuration options"; 2368 container ipv6-unicast { 2369 when "../afi-safi-name = 'bgp-mp:ipv6-unicast'" { 2370 description 2371 "Include this container for IPv6 Unicast specific 2372 configuration"; 2373 } 2375 description "IPv6 unicast configuration options"; 2377 // include common IPv[46] unicast options 2378 uses ipv4-ipv6-unicast-common; 2380 // placeholder for IPv6 unicast specific configuration 2381 // options 2382 } 2383 } 2385 grouping ipv4-labelled-unicast-group { 2386 description 2387 "Group for IPv4 Labelled Unicast configuration options"; 2389 container ipv4-labelled-unicast { 2390 when "../afi-safi-name = 'bgp-mp:ipv4-labelled-unicast'" { 2391 description 2392 "Include this container for IPv4 Labelled Unicast specific 2393 configuration"; 2394 } 2396 description "IPv4 Labelled Unicast configuration options"; 2397 uses all-afi-safi-common; 2399 // placeholder for IPv4 Labelled Unicast specific config 2400 // options 2401 } 2402 } 2404 grouping ipv6-labelled-unicast-group { 2405 description 2406 "Group for IPv6 Labelled Unicast configuration options"; 2408 container ipv6-labelled-unicast { 2409 when "../afi-safi-name = 'bgp-mp:ipv6-labelled-unicast'" { 2410 description 2411 "Include this container for IPv6 Labelled Unicast specific 2412 configuration"; 2413 } 2415 description "IPv6 Labelled Unicast configuration options"; 2417 uses all-afi-safi-common; 2419 // placeholder for IPv6 Labelled Unicast specific config 2420 // options. 2421 } 2422 } 2424 grouping l3vpn-ipv4-unicast-group { 2425 description 2426 "Group for IPv4 Unicast L3VPN configuration options"; 2428 container l3vpn-ipv4-unicast { 2429 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv4-unicast'" { 2430 description 2431 "Include this container for IPv4 Unicast L3VPN specific 2432 configuration"; 2433 } 2435 description "Unicast IPv4 L3VPN configuration options"; 2437 // include common L3VPN configuration options 2438 uses l3vpn-ipv4-ipv6-unicast-common; 2440 // placeholder for IPv4 Unicast L3VPN specific config options. 2441 } 2442 } 2444 grouping l3vpn-ipv6-unicast-group { 2445 description 2446 "Group for IPv6 Unicast L3VPN configuration options"; 2448 container l3vpn-ipv6-unicast { 2449 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv6-unicast'" { 2450 description 2451 "Include this container for unicast IPv6 L3VPN specific 2452 configuration"; 2453 } 2455 description "Unicast IPv6 L3VPN configuration options"; 2457 // include common L3VPN configuration options 2458 uses l3vpn-ipv4-ipv6-unicast-common; 2460 // placeholder for IPv6 Unicast L3VPN specific configuration 2461 // options 2462 } 2463 } 2465 grouping l3vpn-ipv4-multicast-group { 2466 description 2467 "Group for IPv4 L3VPN multicast configuration options"; 2469 container l3vpn-ipv4-multicast { 2470 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv4-multicast'" { 2471 description 2472 "Include this container for multicast IPv6 L3VPN specific 2473 configuration"; 2474 } 2476 description "Multicast IPv4 L3VPN configuration options"; 2478 // include common L3VPN multicast options 2479 uses l3vpn-ipv4-ipv6-multicast-common; 2481 // placeholder for IPv4 Multicast L3VPN specific configuration 2482 // options 2483 } 2484 } 2486 grouping l3vpn-ipv6-multicast-group { 2487 description 2488 "Group for IPv6 L3VPN multicast configuration options"; 2490 container l3vpn-ipv6-multicast { 2491 when "../afi-safi-name = 'bgp-mp:l3vpn-ipv6-multicast'" { 2492 description 2493 "Include this container for multicast IPv6 L3VPN specific 2494 configuration"; 2495 } 2497 description "Multicast IPv6 L3VPN configuration options"; 2499 // include common L3VPN multicast options 2500 uses l3vpn-ipv4-ipv6-multicast-common; 2502 // placeholder for IPv6 Multicast L3VPN specific configuration 2503 // options 2504 } 2505 } 2507 grouping l2vpn-vpls-group { 2508 description 2509 "Group for BGP-signalled VPLS configuration options"; 2511 container l2vpn-vpls { 2512 when "../afi-safi-name = 'bgp-mp:l2vpn-vpls'" { 2513 description 2514 "Include this container for BGP-signalled VPLS specific 2515 configuration"; 2516 } 2518 description "BGP-signalled VPLS configuration options"; 2520 // include common L2VPN options 2521 uses l2vpn-common; 2523 // placeholder for BGP-signalled VPLS specific configuration 2524 // options 2525 } 2526 } 2528 grouping l2vpn-evpn-group { 2529 description 2530 "Group for BGP EVPN configuration options"; 2532 container l2vpn-evpn { 2533 when "../afi-safi-name = 'bgp-mp:l2vpn-evpn'" { 2534 description 2535 "Include this container for BGP EVPN specific 2536 configuration"; 2537 } 2539 description "BGP EVPN configuration options"; 2540 // include common L2VPN options 2541 uses l2vpn-common; 2543 // placeholder for BGP EVPN specific configuration options 2544 } 2545 } 2547 grouping bgp-route-selection-options_config { 2548 description 2549 "Set of configuration options that govern best 2550 path selection."; 2552 leaf always-compare-med { 2553 type boolean; 2554 default "false"; 2555 description 2556 "Compare multi-exit discriminator (MED) value from 2557 different ASes when selecting the best route. The 2558 default behavior is to only compare MEDs for paths 2559 received from the same AS."; 2560 } 2562 leaf ignore-as-path-length { 2563 type boolean; 2564 default "false"; 2565 description 2566 "Ignore the AS path length when selecting the best path. 2567 The default is to use the AS path length and prefer paths 2568 with shorter length."; 2569 } 2571 leaf external-compare-router-id { 2572 type boolean; 2573 default "true"; 2574 description 2575 "When comparing similar routes received from external 2576 BGP peers, use the router-id as a criterion to select 2577 the active path."; 2578 } 2580 leaf advertise-inactive-routes { 2581 type boolean; 2582 default "false"; 2583 description 2584 "Advertise inactive routes to external peers. The 2585 default is to only advertise active routes."; 2587 } 2589 leaf enable-aigp { 2590 type boolean; 2591 default false; 2592 description 2593 "Flag to enable sending / receiving accumulated IGP 2594 attribute in routing updates"; 2595 } 2597 leaf ignore-next-hop-igp-metric { 2598 type boolean; 2599 default "false"; 2600 description 2601 "Ignore the IGP metric to the next-hop when calculating 2602 BGP best-path. The default is to select the route for 2603 which the metric to the next-hop is lowest"; 2604 } 2605 } 2607 grouping bgp-use-multiple-paths-ebgp-as-options_config { 2608 description 2609 "Configuration parameters specific to eBGP multipath applicable 2610 to all contexts"; 2612 leaf allow-multiple-as { 2613 type boolean; 2614 default "false"; 2615 description 2616 "Allow multipath to use paths from different neighbouring 2617 ASes. The default is to only consider multiple paths from 2618 the same neighbouring AS."; 2619 } 2620 } 2622 grouping bgp-use-multiple-paths-ebgp_config { 2623 description 2624 "Configuration parameters relating to multipath for eBGP"; 2626 uses bgp-use-multiple-paths-ebgp-as-options_config; 2628 leaf maximum-paths { 2629 type uint32; 2630 default 1; 2631 description 2632 "Maximum number of parallel paths to consider when using 2633 BGP multipath. The default is use a single path."; 2634 } 2636 } 2638 grouping bgp-use-multiple-paths-ibgp_config { 2639 description 2640 "Configuration parmaeters relating to multipath for iBGP"; 2642 leaf maximum-paths { 2643 type uint32; 2644 default 1; 2645 description 2646 "Maximum number of parallel paths to consider when using 2647 iBGP multipath. The default is to use a single path"; 2648 } 2649 } 2651 grouping bgp-use-multiple-paths { 2652 description 2653 "Configuration parameters relating to multipath for BGP - both 2654 iBGP and eBGP"; 2656 container use-multiple-paths { 2657 description 2658 "Parameters related to the use of multiple paths for the 2659 same NLRI"; 2661 container config { 2662 description 2663 "Configuration parameters relating to multipath"; 2664 uses bgp-use-multiple-paths_config; 2665 } 2666 container state { 2667 description 2668 "State parameters relating to multipath"; 2669 uses bgp-use-multiple-paths_config; 2670 } 2672 container ebgp { 2673 description 2674 "Multipath parameters for eBGP"; 2675 container config { 2676 description 2677 "Configuration parameters relating to eBGP multipath"; 2678 uses bgp-use-multiple-paths-ebgp_config; 2679 } 2680 container state { 2681 config false; 2682 description 2683 "State information relating to eBGP multipath"; 2685 uses bgp-use-multiple-paths-ebgp_config; 2686 } 2687 } 2689 container ibgp { 2690 description 2691 "Multipath parameters for iBGP"; 2692 container config { 2693 description 2694 "Configuration parameters relating to iBGP multipath"; 2695 uses bgp-use-multiple-paths-ibgp_config; 2696 } 2697 container state { 2698 config false; 2699 description 2700 "State information relating to iBGP multipath"; 2701 uses bgp-use-multiple-paths-ibgp_config; 2702 } 2703 } 2704 } 2705 } 2707 grouping bgp-use-multiple-paths-neighbor { 2708 description 2709 "Per-neighbor configuration for multipath for BGP"; 2711 container use-multiple-paths { 2712 description 2713 "Parameters related to the use of multiple-paths for the same 2714 NLRI when they are received only from this neighbor"; 2716 container config { 2717 description 2718 "Configuration parameters relating to multipath"; 2719 uses bgp-use-multiple-paths_config; 2720 } 2721 container state { 2722 description 2723 "State parameters relating to multipath"; 2724 uses bgp-use-multiple-paths_config; 2725 } 2727 container ebgp { 2728 description 2729 "Multipath configuration for eBGP"; 2730 container config { 2731 description 2732 "Configuration parameters relating to eBGP multipath"; 2734 uses bgp-use-multiple-paths-ebgp-as-options_config; 2735 } 2736 container state { 2737 config false; 2738 description 2739 "State information relating to eBGP multipath"; 2740 uses bgp-use-multiple-paths-ebgp-as-options_config; 2741 } 2742 } 2743 } 2744 } 2746 grouping bgp-use-multiple-paths_config { 2747 description 2748 "Generic configuration options relating to use of multiple 2749 paths for a referenced AFI-SAFI, group or neighbor"; 2751 leaf enabled { 2752 type boolean; 2753 default false; 2754 description 2755 "Whether the use of multiple paths for the same NLRI is 2756 enabled for the neighbor. This value is overridden by 2757 any more specific configuration value."; 2758 } 2759 } 2761 grouping bgp-afi-safi-graceful-restart_config { 2762 description 2763 "BGP graceful restart parameters that apply on a per-AFI-SAFI 2764 basis"; 2766 leaf enabled { 2767 type boolean; 2768 default false; 2769 description 2770 "This leaf indicates whether graceful-restart is enabled for 2771 this AFI-SAFI"; 2772 } 2773 } 2775 grouping bgp-afi-safi_config { 2776 description 2777 "Configuration parameters used for all BGP AFI-SAFIs"; 2779 leaf afi-safi-name { 2780 type identityref { 2781 base bgp-types:afi-safi-type; 2783 } 2784 description "AFI,SAFI"; 2785 } 2787 leaf enabled { 2788 type boolean; 2789 default false; 2790 description 2791 "This leaf indicates whether the IPv4 Unicast AFI,SAFI is 2792 enabled for the neighbour or group"; 2793 } 2794 } 2796 grouping all-afi-safi-common-prefix-limit_config { 2797 description 2798 "Configuration parameters relating to prefix-limits for an 2799 AFI-SAFI"; 2801 leaf max-prefixes { 2802 type uint32; 2803 description 2804 "Maximum number of prefixes that will be accepted 2805 from the neighbour"; 2806 } 2808 leaf shutdown-threshold-pct { 2809 type bgp-types:percentage; 2810 description 2811 "Threshold on number of prefixes that can be received 2812 from a neighbour before generation of warning messages 2813 or log entries. Expressed as a percentage of 2814 max-prefixes"; 2815 } 2817 leaf restart-timer { 2818 type decimal64 { 2819 fraction-digits 2; 2820 } 2821 units "seconds"; 2822 description 2823 "Time interval in seconds after which the BGP session 2824 is re-established after being torn down due to exceeding 2825 the max-prefix limit."; 2826 } 2827 } 2829 grouping ipv4-ipv6-unicast-common_config { 2830 description 2831 "Common configuration parameters for IPv4 and IPv6 Unicast 2832 address families"; 2834 leaf send-default-route { 2835 type boolean; 2836 default "false"; 2837 description 2838 "If set to true, send the default-route to the neighbour(s)"; 2839 } 2840 } 2842 grouping all-afi-safi-common { 2843 description 2844 "Grouping for configuration common to all AFI,SAFI"; 2846 container prefix-limit { 2847 description 2848 "Configure the maximum number of prefixes that will be 2849 accepted from a peer"; 2851 container config { 2852 description 2853 "Configuration parameters relating to the prefix 2854 limit for the AFI-SAFI"; 2855 uses all-afi-safi-common-prefix-limit_config; 2856 } 2857 container state { 2858 config false; 2859 description 2860 "State information relating to the prefix-limit for the 2861 AFI-SAFI"; 2862 uses all-afi-safi-common-prefix-limit_config; 2863 } 2864 } 2865 } 2867 grouping ipv4-ipv6-unicast-common { 2868 description 2869 "Common configuration that is applicable for IPv4 and IPv6 2870 unicast"; 2872 // include common afi-safi options. 2873 uses all-afi-safi-common; 2875 // configuration options that are specific to IPv[46] unicast 2876 container config { 2877 description 2878 "Configuration parameters for common IPv4 and IPv6 unicast 2879 AFI-SAFI options"; 2880 uses ipv4-ipv6-unicast-common_config; 2881 } 2882 container state { 2883 config false; 2884 description 2885 "State information for common IPv4 and IPv6 unicast 2886 parameters"; 2887 uses ipv4-ipv6-unicast-common_config; 2888 } 2889 } 2891 grouping l3vpn-ipv4-ipv6-unicast-common { 2892 description 2893 "Common configuration applied across L3VPN for IPv4 2894 and IPv6"; 2896 // placeholder -- specific configuration options that are generic 2897 // across IPv[46] unicast address families. 2898 uses all-afi-safi-common; 2899 } 2901 grouping l3vpn-ipv4-ipv6-multicast-common { 2902 description 2903 "Common configuration applied across L3VPN for IPv4 2904 and IPv6"; 2906 // placeholder -- specific configuration options that are 2907 // generic across IPv[46] multicast address families. 2908 uses all-afi-safi-common; 2909 } 2911 grouping l2vpn-common { 2912 description 2913 "Common configuration applied across L2VPN address 2914 families"; 2916 // placeholder -- specific configuration options that are 2917 // generic across L2VPN address families 2918 uses all-afi-safi-common; 2919 } 2921 grouping bgp-route-selection-options { 2922 description 2923 "Parameters relating to the BGP route selection process"; 2925 container route-selection-options { 2926 description 2927 "Parameters relating to options for route selection"; 2928 container config { 2929 description 2930 "Configuration parameters relating to route selection 2931 options"; 2932 uses bgp-route-selection-options_config; 2933 } 2934 container state { 2935 config false; 2936 description 2937 "State information for the route selection options"; 2938 uses bgp-route-selection-options_config; 2939 } 2940 } 2941 } 2943 // *********** STRUCTURE GROUPINGS ********************** 2945 grouping bgp-global-afi-safi { 2946 description 2947 "Parameters and route selection options for MP-BGP 2948 specific to the Global AFI-SAFI"; 2949 uses bgp-route-selection-options; 2950 } 2952 grouping bgp-group-afi-safi { 2953 description 2954 "Parameters and route selection options for MP-BGP 2955 specific to peer groups"; 2956 uses bgp-route-selection-options; 2957 } 2959 grouping bgp-common-afi-safi-list { 2960 description 2961 "List of address-families associated with the BGP instance, 2962 a peer-group or neighbor"; 2964 list afi-safi { 2965 key "afi-safi-name"; 2967 description 2968 "AFI,SAFI configuration available for the 2969 neighbour or group"; 2971 leaf afi-safi-name { 2972 type leafref { 2973 path "../config/afi-safi-name"; 2975 } 2976 description 2977 "Reference to the AFI-SAFI name used as a key 2978 for the AFI-SAFI list"; 2979 } 2981 container graceful-restart { 2982 description 2983 "Parameters relating to BGP graceful-restart"; 2984 container config { 2985 description 2986 "Configuration options for BGP graceful-restart"; 2987 uses bgp-afi-safi-graceful-restart_config; 2988 } 2989 container state { 2990 config false; 2991 description 2992 "State information for BGP graceful-restart"; 2993 uses bgp-afi-safi-graceful-restart_config; 2994 } 2995 } 2997 container config { 2998 description 2999 "Configuration parameters for the AFI-SAFI"; 3000 uses bgp-afi-safi_config; 3001 } 3002 container state { 3003 config false; 3004 description 3005 "State information relating to the AFI-SAFI"; 3006 uses bgp-afi-safi_config; 3007 uses bgp-op:bgp-afi-safi_state; 3008 } 3010 // import and export policy included for the afi/safi 3011 uses rpol:apply-policy-group; 3013 uses ipv4-unicast-group; 3014 uses ipv6-unicast-group; 3015 uses ipv4-labelled-unicast-group; 3016 uses ipv6-labelled-unicast-group; 3017 uses l3vpn-ipv4-unicast-group; 3018 uses l3vpn-ipv6-unicast-group; 3019 uses l3vpn-ipv4-multicast-group; 3020 uses l3vpn-ipv6-multicast-group; 3021 uses l2vpn-vpls-group; 3022 uses l2vpn-evpn-group; 3024 } 3025 } 3026 } 3027 3029 6.5. BGP operational data items 3031 file bgp-operational.yang 3032 module bgp-operational { 3034 yang-version "1"; 3036 // namespace 3037 // TODO: change to an ietf or other more generic namespace 3038 namespace "http://openconfig.net/yang/bgp-operational"; 3040 prefix "bgp-op"; 3042 // import some basic inet types 3043 import ietf-inet-types { prefix inet; } 3044 import ietf-yang-types { prefix yang; } 3045 import bgp-types { prefix bgp-types; } 3047 // meta 3049 organization 3050 "OpenConfig working group"; 3052 contact 3053 "OpenConfig working group 3054 netopenconfig@googlegroups.com"; 3056 description 3057 "This module is part of a YANG model for BGP protocol 3058 configuration, focusing on operational data (i.e., state 3059 variables) related to BGP operations"; 3061 revision "2015-05-15" { 3062 description 3063 "Initial revision"; 3064 reference "TBD"; 3065 } 3067 // extension statements 3069 // feature statements 3070 // identity statements 3072 // typedef statements 3074 // grouping statements 3076 grouping bgp-counters-message-types_common { 3077 description 3078 "Grouping of BGP message types, included for re-use 3079 across counters"; 3081 leaf UPDATE { 3082 type uint64; 3083 description 3084 "Number of BGP UPDATE messages announcing, withdrawing 3085 or modifying paths exchanged."; 3086 } 3088 leaf NOTIFICATION { 3089 type uint64; 3090 description 3091 "Number of BGP NOTIFICATION messages indicating an 3092 error condition has occurred exchanged."; 3093 } 3094 } 3096 grouping bgp-context-pfx-path-counters_common { 3097 description 3098 "Grouping containing common counters relating to prefixes and 3099 paths"; 3101 leaf total-paths { 3102 type uint32; 3103 description 3104 "Total number of BGP paths within the context"; 3105 } 3107 leaf total-prefixes { 3108 type uint32; 3109 description 3110 ""; 3111 } 3112 } 3114 grouping bgp-global_state { 3115 description 3116 "Grouping containing operational parameters relating to the 3117 global BGP instance"; 3118 uses bgp-context-pfx-path-counters_common; 3119 } 3121 grouping bgp-global-afi-safi_state { 3122 description 3123 "Grouping containing operational parameters relating to each 3124 AFI-SAFI within the BGP global instance"; 3125 uses bgp-context-pfx-path-counters_common; 3126 } 3128 grouping bgp-peer-group_state { 3129 description 3130 "Grouping containing operational parameters relating to a BGP 3131 peer group"; 3132 uses bgp-context-pfx-path-counters_common; 3133 } 3135 grouping bgp-neighbor_state { 3136 description 3137 "Grouping containing operational state variables relating to a 3138 BGP neighbor"; 3140 leaf session-state { 3141 type enumeration { 3142 enum IDLE { 3143 description 3144 "neighbor is down, and in the Idle state of the 3145 FSM"; 3146 } 3147 enum CONNECT { 3148 description 3149 "neighbor is down, and the session is waiting for 3150 the underlying transport session to be established"; 3151 } 3152 enum ACTIVE { 3153 description 3154 "neighbor is down, and the local system is awaiting 3155 a conncetion from the remote peer"; 3156 } 3157 enum OPENSENT { 3158 description 3159 "neighbor is in the process of being established. 3160 The local system has sent an OPEN message"; 3161 } 3162 enum OPENCONFIRM { 3163 description 3164 "neighbor is in the process of being established. 3166 The local system is awaiting a NOTIFICATION or 3167 KEEPALIVE message"; 3168 } 3169 enum ESTABLISHED { 3170 description 3171 "neighbor is up - the BGP session with the peer is 3172 established"; 3173 } 3174 } 3175 description 3176 "Operational state of the BGP peer"; 3177 } 3179 leaf-list supported-capabilities { 3180 type identityref { 3181 base bgp-types:bgp-capability; 3182 } 3183 description 3184 "BGP capabilities negotiated as supported with the peer"; 3185 } 3186 } 3188 grouping bgp-neighbor-afi-safi_state { 3189 description 3190 "Operational state on a per-AFI-SAFI basis for a BGP 3191 neighbor"; 3193 leaf active { 3194 type boolean; 3195 description 3196 "This value indicates whether a particular AFI-SAFI has 3197 been succesfully negotiated with the peer. An AFI-SAFI 3198 may be enabled in the current running configuration, but a 3199 session restart may be required in order to negotiate the new 3200 capability."; 3201 } 3203 uses bgp-neighbor-prefix-counters_state; 3204 } 3206 grouping bgp-neighbor-prefix-counters_state { 3207 description 3208 "Counters for BGP neighbor sessions"; 3210 container prefixes { 3211 description "Prefix counters for the BGP session"; 3212 leaf received { 3213 type uint32; 3214 description 3215 "The number of prefixes received from the neighbor"; 3216 } 3218 leaf sent { 3219 type uint32; 3220 description 3221 "The number of prefixes advertised to the neighbor"; 3222 } 3224 leaf installed { 3225 type uint32; 3226 description 3227 "The number of advertised prefixes installed in the 3228 Loc-RIB"; 3229 } 3230 } 3231 } 3233 grouping bgp-neighbor-message-counters-sent_state { 3234 description 3235 "Counters relating to messages sent to a BGP neighbor"; 3236 uses bgp-counters-message-types_common; 3237 } 3239 grouping bgp-neighbor-message-counters-received_state { 3240 description 3241 "Counters relating to the mesages received from a BGP 3242 neighbor"; 3243 uses bgp-counters-message-types_common; 3244 } 3246 grouping bgp-neighbor-queue-counters_state { 3247 description 3248 "Counters relating to the message queues associated with the 3249 BGP peer"; 3250 leaf input { 3251 type uint32; 3252 description 3253 "The number of messages received from the peer currently 3254 queued"; 3255 } 3257 leaf output { 3258 type uint32; 3259 description 3260 "The number of messages queued to be sent to the peer"; 3261 } 3263 } 3265 grouping bgp-neighbor-transport_state { 3266 description 3267 "Operational state parameters relating to the transport session 3268 used for the BGP session"; 3270 leaf local-port { 3271 type inet:port-number; 3272 description 3273 "Local TCP port being used for the TCP session supporting 3274 the BGP session"; 3275 } 3277 leaf remote-address { 3278 type inet:ip-address; 3279 description 3280 "Remote port being used by the peer for the TCP session 3281 supporting the BGP session"; 3282 } 3284 leaf remote-port { 3285 type inet:port-number; 3286 description 3287 "Remote address to which the BGP session has been 3288 established"; 3289 } 3290 } 3292 grouping bgp-neighbor-error-handling_state { 3293 description 3294 "Operational state parameters relating to enhanced error 3295 error handling for BGP"; 3297 leaf erroneous-update-messages { 3298 type uint32; 3299 description 3300 "The number of BGP UPDATE messages for which the 3301 treat-as-withdraw mechanism has been applied based 3302 on erroneous message contents"; 3303 } 3304 } 3306 grouping bgp-neighbor-timers_state { 3307 description 3308 "Operational state parameters relating to BGP timers associated 3309 with the BGP session"; 3311 leaf uptime { 3312 type yang:timeticks; 3313 description 3314 "This timer determines the amount of time since the 3315 BGP last transitioned in or out of the Established 3316 state"; 3317 } 3319 leaf negotiated-hold-time { 3320 type decimal64 { 3321 fraction-digits 2; 3322 } 3323 description 3324 "The negotiated hold-time for the BGP session"; 3325 } 3326 } 3328 grouping bgp-afi-safi_state { 3329 description 3330 "Operational state information relevant to all address 3331 families that may be carried by the BGP session"; 3333 // placeholder - options in this container are 3334 // valid in both the global and per-neighbor 3335 // paths 3337 } 3339 grouping bgp-afi-safi-graceful-restart_state { 3340 description 3341 "Operational state information relevant to graceful restart 3342 for BGP"; 3344 leaf peer-restart-time { 3345 type uint16 { 3346 range 0..4096; 3347 } 3348 description 3349 "The period of time (advertised by the peer) that 3350 the peer expects a restart of a BGP session to 3351 take"; 3352 } 3354 leaf peer-restarting { 3355 type boolean; 3356 description 3357 "This flag indicates whether the remote neighbor is currently 3358 in the process of restarting, and hence received routes are 3359 currently stale"; 3360 } 3362 leaf local-restarting { 3363 type boolean; 3364 description 3365 "This flag indicates whether the local neighbor is currently 3366 restarting. The flag is unset after all NLRI have been 3367 advertised to the peer, and the End-of-RIB (EOR) marker has 3368 been unset"; 3369 } 3371 leaf mode { 3372 type enumeration { 3373 enum HELPER-ONLY { 3374 description 3375 "The local router is operating in helper-only mode, and 3376 hence will not retain forwarding state during a local 3377 session restart, but will do so during a restart of the 3378 remote peer"; 3379 } 3380 enum BILATERAL { 3381 description 3382 "The local router is operating in both helper mode, and 3383 hence retains forwarding state during a remote restart, 3384 and also maintains forwarding state during local session 3385 restart"; 3386 } 3387 enum REMOTE-HELPER { 3388 description 3389 "The local system is able to retain routes during restart 3390 but the remote system is only able to act as a helper"; 3391 } 3392 } 3393 description 3394 "Ths leaf indicates the mode of operation of BGP graceful 3395 restart with the peer"; 3396 } 3397 } 3399 grouping bgp-neighbor-afi-safi-graceful-restart_state { 3400 description 3401 "Operational state variables relating to the graceful-restart 3402 mechanism on a per-AFI-SAFI basis"; 3404 leaf received { 3405 type boolean; 3406 description 3407 "This leaf indicates whether the neighbor advertised the 3408 ability to support graceful-restart for this AFI-SAFI"; 3409 } 3411 leaf advertised { 3412 type boolean; 3413 description 3414 "This leaf indicates whether the ability to support 3415 graceful-restart has been advertised to the peer"; 3416 } 3417 } 3419 } 3421 3423 7. References 3425 7.1. Normative references 3427 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 3428 Network Configuration Protocol (NETCONF)", RFC 6020, 3429 October 2010. 3431 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 3432 Bierman, "Network Configuration Protocol (NETCONF)", RFC 3433 6241, June 2011. 3435 [RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway 3436 Protocol 4 (BGP-4)", RFC 4271, January 2006. 3438 [RFC1997] Chandrasekeran, R., Traina, P., and T. Li, "BGP 3439 Communities Attribute", RFC 1997, August 1996. 3441 [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route 3442 Reflection: An Alternative to Full Mesh Internal BGP 3443 (IBGP)", RFC 4456, April 2006. 3445 [RFC3065] Traina, P., McPherson, D., and J. Scudder, "Autonomous 3446 System Confederations for BGP", RFC 3065, February 2001. 3448 [RFC2439] Villamizar, C., Chandra, R., and R. Govindan, "BGP Route 3449 Flap Damping", RFC 2439, November 1998. 3451 [RFC4724] Sangli, S., Chen, E., Fernando, R., Scudder, J., and Y. 3452 Rekhter, "Graceful Restart Mechanism for BGP", RFC 4724, 3453 January 2007. 3455 [RFC6811] Mohapatra, P., Scudder, J., Ward, D., Bush, R., and R. 3456 Austein, "BGP Prefix Origin Validation", RFC 6811, January 3457 2013. 3459 [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, 3460 "Multiprotocol Extensions for BGP-4", RFC 4760, January 3461 2007. 3463 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 3464 July 2013. 3466 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3467 January 2004. 3469 7.2. Informative references 3471 [I-D.shaikh-rtgwg-policy-model] 3472 Shaikh, A., Shakir, R., D'Souza, K., and C. Chase, 3473 "Routing Policy Configuration Model for Service Provider 3474 Networks", draft-shaikh-rtgwg-policy-model-00 (work in 3475 progress), January 2015. 3477 [I-D.openconfig-netmod-opstate] 3478 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 3479 of Operational State Data in YANG", draft-openconfig- 3480 netmod-opstate-00 (work in progress), March 2015. 3482 [I-D.ietf-netmod-routing-cfg] 3483 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3484 Management", draft-ietf-netmod-routing-cfg-19 (work in 3485 progress), May 2015. 3487 [I-D.rtgyangdt-rtgwg-device-model] 3488 Lindem, A., Berger, L., Ed., Bogdanovic, D., and C. Hopps, 3489 "Network Device YANG Organizational Model", draft- 3490 rtgyangdt-rtgwg-device-model-00 (work in progress), July 3491 2015. 3493 Appendix A. Acknowledgements 3495 The authors are grateful for valuable contributions to this document 3496 and the associated models from: Ebben Aires, Pavan Beeram, Chris 3497 Chase, Ed Crabbe, Luyuan Fang, Bill Fenner, Akshay Gattani, Josh 3498 George, Vijay Gill, Jeff Haas, Dhanendra Jain, Ina Minei, Carl 3499 Moberg, Ashok Narayanan, Einar Nilsen-Nygaard, Adam Simpson, Puneet 3500 Sood, Jason Sterne, Jim Uttaro, and Gunter Vandevelde. 3502 Authors' Addresses 3504 Anees Shaikh (editor) 3505 Google 3506 1600 Amphitheatre Pkwy 3507 Mountain View, CA 94043 3508 US 3510 Email: aashaikh@google.com 3512 Rob Shakir (editor) 3513 BT 3514 pp. C3L, BT Centre 3515 81, Newgate Street 3516 London EC1A 7AJ 3517 UK 3519 Email: rob.shakir@bt.com 3520 URI: http://www.bt.com/ 3522 Keyur Patel (editor) 3523 Cisco 3524 170 W. Tasman Drive 3525 San Jose, CA 95134 3526 USA 3528 Email: keyupate@cisco.com 3530 Susan Hares (editor) 3531 Huawei 3532 7453 Hickory Hill 3533 Saline, MI 48176 3534 USA 3536 Email: shares@ndzh.com 3537 Kevin D'Souza 3538 AT&T 3539 200 S. Laurel Ave 3540 Middletown, NJ 3541 US 3543 Email: kd6913@att.com 3545 Deepak Bansal 3546 Microsoft 3547 205 108th Ave. NE, Suite 400 3548 Bellevue, WA 3549 US 3551 Email: dbansal@microsoft.com 3553 Alexander Clemm 3554 Cisco 3555 170 W. Tasman Drive 3556 San Jose, CA 95134 3557 USA 3559 Email: alex@cisco.com 3561 Aleksandr Zhdankin 3562 Cisco 3563 170 W. Tasman Drive 3564 San Jose, CA 95134 3565 USA 3567 Email: azhdanki@cisco.com 3569 Mahesh Jethanandani 3570 Ciena 3571 1741 Technology Drive 3572 San Jose, CA 95110 3573 USA 3575 Email: mjethanandani@gmail.com 3576 Xyfeng Liu 3577 Ericsson 3578 1595 Spring Hill Road, Suite 500 3579 Vienna, VA 22182 3580 USA 3582 Email: xufeng.liu@ericsson.com