idnits 2.17.00 (12 Aug 2021) /tmp/idnits28351/draft-zhdankin-idr-bgp-cfg-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 80 instances of too long lines in the document, the longest one being 104 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 540 has weird spacing: '...st-name str...' == The document seems to contain a disclaimer for pre-RFC5378 work, but was first submitted on or after 10 November 2008. The disclaimer is usually necessary only for documents that revise or obsolete older RFCs, and that take significant amounts of text from those RFCs. If you can contact all authors of the source material and they are willing to grant the BCP78 rights to the IETF Trust, you can and should remove the disclaimer. Otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (January 26, 2015) is 2665 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) == Unused Reference: 'RFC2629' is defined on line 2005, but no explicit reference was found in the text == Unused Reference: 'RFC2842' is defined on line 2008, but no explicit reference was found in the text == Unused Reference: 'RFC3552' is defined on line 2011, but no explicit reference was found in the text == Unused Reference: 'RFC4271' is defined on line 2015, but no explicit reference was found in the text == Unused Reference: 'RFC5492' is defined on line 2035, but no explicit reference was found in the text == Outdated reference: draft-ietf-netmod-routing-cfg has been published as RFC 8022 ** Obsolete normative reference: RFC 2629 (Obsoleted by RFC 7749) ** Obsolete normative reference: RFC 2842 (Obsoleted by RFC 3392) Summary: 3 errors (**), 0 flaws (~~), 9 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Zhdankin 3 Internet-Draft K. Patel 4 Intended status: Standards Track A. Clemm 5 Expires: July 30, 2015 Cisco 6 S. Hares 7 Huawei 8 M. Jethanandani 9 Ciena 10 X. Liu 11 Ericsson 12 January 26, 2015 14 Yang Data Model for BGP Protocol 15 draft-zhdankin-idr-bgp-cfg-00.txt 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage BGP. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on July 30, 2015. 39 Copyright Notice 41 Copyright (c) 2015 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 This document may contain material from IETF Documents or IETF 55 Contributions published or made publicly available before November 56 10, 2008. The person(s) controlling the copyright in some of this 57 material may not have granted the IETF Trust the right to allow 58 modifications of such material outside the IETF Standards Process. 59 Without obtaining an adequate license from the person(s) controlling 60 the copyright in such materials, this document may not be modified 61 outside the IETF Standards Process, and derivative works of it may 62 not be created outside the IETF Standards Process, except to format 63 it for publication as an RFC or to translate it into languages other 64 than English. 66 Table of Contents 68 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 69 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 70 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 4 71 3. The Design of the Core Routing Data Model . . . . . . . . . . 4 72 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 73 3.2. BGP Router Configuration . . . . . . . . . . . . . . . . 4 74 3.2.1. AF Configuration . . . . . . . . . . . . . . . . . . 5 75 3.2.1.1. AF Specific Protocol Configuration . . . . . . . 7 76 3.2.1.2. BGP Bestpath Configuration . . . . . . . . . . . 8 77 3.2.1.3. BGP Neighbor Configuration . . . . . . . . . . . 8 78 3.2.1.4. BGP Dampening . . . . . . . . . . . . . . . . . . 8 79 3.2.1.5. BGP Route Aggregation . . . . . . . . . . . . . . 8 80 3.2.1.6. BGP Redistribution . . . . . . . . . . . . . . . 8 81 3.2.2. BGP Neighbor Configuration . . . . . . . . . . . . . 8 82 3.2.3. BGP RPKI . . . . . . . . . . . . . . . . . . . . . . 11 83 3.3. Prefix Lists . . . . . . . . . . . . . . . . . . . . . . 12 84 4. BGP Yang Module . . . . . . . . . . . . . . . . . . . . . . . 12 85 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 86 6. Security Considerations . . . . . . . . . . . . . . . . . . . 42 87 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 42 88 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 42 89 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 90 9.1. Normative References . . . . . . . . . . . . . . . . . . 42 91 9.2. Informative References . . . . . . . . . . . . . . . . . 43 92 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 94 1. Introduction 96 YANG [RFC6020] is a data definition language that was introduced to 97 define the contents of a conceptual data store that allows networked 98 devices to be managed using NETCONF [RFC6241]. YANG is proving 99 relevant beyond its initial confines, as bindings to other interfaces 100 (e.g. ReST) and encodings other than XML (e.g. JSON) are being 101 defined. Furthermore, YANG data models can be used as the basis of 102 implementation for other interfaces, such as CLI and programmatic 103 APIs. 105 This document defines a YANG data model that can be used to configure 106 and manage BGP. The data model is very comprehensive in scope, 107 resulting in a very large module being defined. When contemplating 108 whether it would be appropriate to introduce a data model of such a 109 large scope, we decided that there would be value in particular 110 because BGP defines such a rich set of features, which makes the 111 problem arising from heterogeneity involved when managing these 112 features quite pronounced. Also, there is very little information 113 that is designated as "mandatory", leaving the decision which 114 capabilities to actually support to product implementations. 116 There are several distinct parts of the data model. The first part, 117 by far the largest, serves to configure and manage BGP itself. It 118 defines a large set of control knobs for that purpose, as well as a 119 few data nodes that can be used to monitor health and gather 120 statistics. The second part, much smaller than the first, defines a 121 data model for the configuration of AS-Path and prefix-based filter 122 lists, in essence policies that define the exchange of BGP messages 123 between BGP peers. Together they form a complete data model that 124 serves as a framework for configuration and management of BGP 125 protocol and its policies. 127 The YANG module defined in this document has all the common building 128 blocks for BGP protocol namely: Neighbor List, Address Family 129 specific Parameters, Protocol Bestpath specific Parameters, Prefix 130 based Filter Lists, and AS-PATH based Filter Lists. 132 1.1. Requirements Language 134 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 135 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 136 document are to be interpreted as described in RFC 2119 [RFC2119]. 138 2. Definitions and Acronyms 140 AF: Address Family 142 AS: Autonomous System 144 BGP: Border Gateway Protocol 146 HTTP: Hyper-Text Transfer Protocol 148 JSON: JavaScript Object Notation 150 L2VPN: Layer 2 VPN 152 NETCONF: Network Configuration Protocol 154 NSAP: Network Service Access Point 156 ReST: Representational State Transfer, a style of stateless interface 157 and protocol that is generally carried over HTTP 159 RPKI: Resource Public Key Infrastructure 161 RTFilter: Route Filter 163 VPN: Virtual Private Network 165 YANG: Data definition language for NETCONF 167 3. The Design of the Core Routing Data Model 169 3.1. Overview 171 The overall data model consists of two main components, each 172 contained in its own separate container. Container "bgp-router" is 173 used to configure and manage BGP itself. It is by far the largest 174 part of the model. Container "prefix-lists" is used to configure BGP 175 prefix lists. BGP prefix lists defines the rules and policies that 176 helps BGP restrict information to share with which other nodes. 178 3.2. BGP Router Configuration 180 The overall structure of the "bgp-router" part of the model is 181 depicted in the following diagram. Brackets enclose list keys, "rw" 182 means configuration data, "?" designates optional nodes. The figure 183 does not depict all definitions; it is intended to illustrate the 184 overall structure. 186 module: bgp 187 +--rw bgp-router 188 | +--rw bgp-version? string 189 | +--rw local-as-number? uint32 190 | +--rw local-as-identifier? inet:ip-address 191 | +--rw rpki-config 192 | | ..... 193 | +--rw router-id 194 | | ..... 195 | +--rw af-configuration 196 | ..... 197 +--rw bgp-neighbors 198 ..... 200 The key components of the "bgp-router" model concern the 201 configuration of the BGP neighbors, of the Resource Public Key 202 Infrastructure (RPKI), and of address families (AF). Each is defined 203 in the following subsections. 205 3.2.1. AF Configuration 207 AF-configuration is used to configure and manage BGP configuration on 208 an address family basis. BGP is designed to carry routing 209 information for multiple different address families as specified in 210 [RFC4760]. AF-Configuration is indexed by (router-AS, AFI, SAFI, 211 VRFID) [RFC4760] and [RFC4364]. It contains any AF specific protocol 212 configuration, BGP Bestpath configuration parameters,BGP neighbor 213 configuration parameters, BGP dampening parameters, BGP route 214 aggregation parameters, and any BGP policy configuration like 215 redistribution. 217 The overall structure of the AF Configuration data model is depicted 218 in the following diagram. As before, brackets enclose list keys, 219 "rw" means configuration data, "?" designates optional nodes, 220 parantheses indicate choices. The figure does not depict all 221 definitions; it is intended to illustrate the overall model 222 structure. Roughly speaking, address family configuration allows for 223 separate configuration of IPv4, IPv6, L2VPN, NSAP, VPNv4 and VPNv6 224 address families, as well as route filters. Within each address 225 family, you have additional substructure, for example, to distinguish 226 between configuration of unicast and multicast. 228 module: bgp 229 +--rw bgp-router 230 | ..... 231 | +--rw af-configuration 232 | +--rw ipv4 233 | | +--rw mdt 234 | | | ..... 235 | | +--rw multicast 236 | | | +--rw bgp 237 | | | | ..... 238 | | | +--rw auto-summary? boolean 239 | | | +--rw aggregate-address? inet:ip-address 240 | | | +--rw distance? uint8 241 | | | +--rw network? inet:ip-address 242 | | | +--rw (protocol)? 243 | | | | ..... 244 | | | +--rw default-metric? uint32 245 | | +--rw unicast 246 | | | +--rw bgp 247 | | | | ..... 248 | | | +--rw auto-summary? boolean 249 | | | +--rw aggregate-address? inet:ip-address 250 | | | +--rw distance? uint8 251 | | | +--rw network? inet:ip-address 252 | | | +--rw (protocol)? 253 | | | | ..... 254 | | | +--rw number-of-path? uint8 255 | | | +--rw ibgp-number-of-path? uint8 256 | | | +--rw synchronization? boolean 257 | | +--rw mvpn 258 | | +--rw bgp 259 | | | ..... 260 | | +--rw auto-summary? boolean 261 | +--rw ipv6 262 | | +--rw multicast 263 | | | +--rw bgp 264 | | | | ..... 265 | | | +--rw aggregate-address? inet:ip-address 266 | | | +--rw distance? uint8 267 | | | +--rw network? inet:ip-address 268 | | | +--rw (protocol)? 269 | | | ..... 270 | | +--rw unicast 271 | | | +--rw bgp 272 | | | | ..... 273 | | | +--rw aggregate-address? inet:ip-address 274 | | | +--rw distance? uint8 275 | | | +--rw network? inet:ip-address 276 | | | +--rw (protocol)? 277 | | | | ..... 278 | | | +--rw default-metric? uint32 279 | | | +--rw number-of-path? uint8 280 | | | +--rw ibgp-number-of-path? uint8 281 | | | +--rw synchronization? boolean 282 | | +--rw mvpn 283 | | ..... 284 | +--rw l2vpn 285 | | +--rw vpls 286 | | ..... 287 | +--rw nsap 288 | | +--rw unicast 289 | | +--rw bgp 290 | | | ..... 291 | | +--rw default-metric? uint32 292 | | +--rw number-of-path? uint8 293 | | +--rw ibgp-number-of-path? uint8 294 | | +--rw network? inet:ip-address 295 | | +--rw (protocol)? 296 | | | ..... 297 | | +--rw synchronization? boolean 298 | +--rw rtfilter 299 | | +--rw unicast 300 | | ..... 301 | +--rw vpnv4 302 | | +--rw unicast 303 | | | +--rw bgp 304 | | | | ..... 305 | | | +--rw number-of-path? uint8 306 | | | +--rw ibgp-number-of-path? uint8 307 | | +--rw multicast 308 | | +--rw bgp 309 | | | ..... 310 | | +--rw number-of-path? uint8 311 | | +--rw ibgp-number-of-path? uint8 312 | +--rw vpnv6 313 | +--rw unicast 314 | +--rw bgp 315 | ..... 317 The key AF configuration components are described in the following 318 subsections. 320 3.2.1.1. AF Specific Protocol Configuration 322 AF specific protocol configuration involves configuration of the 323 parameters that are specific to a given AF. For instance, 324 configuration parameters specific to the consistency checking between 325 prefixes and labels are specific to address families that are enabled 326 with Labels. Similarly redistribution of routes from other protocols 327 is specific to Address Families that are supported in other 328 protocols. 330 3.2.1.2. BGP Bestpath Configuration 332 BGP BestPath Configuration Parameters involves configuration of the 333 parameters that influence the BGP Bestpath decision. For instance, 334 the ignore-as-path command allows BGP process to ignore as-path 335 length check. The ignore-routerid command allows BGP process to 336 ignore routerid check. The ignore-igp-metric command allows BGP 337 process to ignore igp metric check. The ignore-cost-community 338 command allows BGP process to ignore cost communities. The MED 339 related commands influence MED comparision in the BGP Bestpath 340 decision. 342 3.2.1.3. BGP Neighbor Configuration 344 BGP Neighbor Configuration Parameters involves configuration of the 345 parameters that are neighbor address family specific. These commands 346 include neighbor capabilities, neighbor policies and any protocol 347 related parameters that are specific to BGP neighbor. 349 3.2.1.4. BGP Dampening 351 BGP Dampening Parameters involves configuration of the parameters 352 that influence BGP Route Dampening. These parameters allow enabling 353 of Route Dampening on an address family level. The Dampening 354 configuration also allows configuration of Dampening specific 355 parameters like max suppress time, resuse threshold, half life, and 356 the suppress threshold. 358 3.2.1.5. BGP Route Aggregation 360 BGP Route Aggregation Parameters involves configuration of the 361 parameters that enables BGP Route Aggregation. 363 3.2.1.6. BGP Redistribution 365 BGP Route Redistribution Parameters involves configuration of the 366 parameters that enables BGP Route Redistribution from and to the BGP 367 protocol. 369 3.2.2. BGP Neighbor Configuration 371 Bgp-neighbor is used to configure and manage BGP neighbors. BGP 372 neighbor configuration is indexed by af-configuration, neighbor 373 address and neighbor-AS. It contains configuration for any policies 374 that are configured for a neighbor on an inbound or an outbound, any 375 transport related configuration parameters, any protocol related 376 configuration parameters, and any protocol capabilities related 377 configuration parameters. 379 BGP-neighbor-groups are used to configure and manage set of BGP 380 neighbors with common configuration. BGP-neighbor-groups are index 381 by af-configuration and group-name. 383 The following diagram depicts the overall structure of the BGP 384 Neighbors subtree. Brackets enclose list keys, "rw" means 385 configuration, "ro" operational state data, and "?" designates 386 optional nodes. Parantheses enclose choice and case nodes. The 387 figure does not depict all definitions; it is intended to illustrate 388 the overall structure. 390 module: bgp 391 + .... 392 +--rw bgp-neighbors 393 | +--rw bgp-neighbor* [peer-address] 394 | +--rw peer-address inet:ip-address 395 | +--rw remote-as uint32 396 | +--rw prefix-list? prefix-list-ref 397 | +--rw default-action? actions-enum 398 | +--rw af-specific-config 399 | | +--rw ipv4 400 | | | +--rw mdt 401 | | | | ..... 402 | | | +--rw unicast 403 | | | | ..... 404 | | | +--rw multicast 405 | | | | ..... 406 | | | +--rw mvpn 407 | | | ..... 408 | | +--rw ipv6 409 | | | +--rw unicast 410 | | | | ..... 411 | | | +--rw multicast 412 | | | | ..... 413 | | | +--rw mvpn 414 | | | ..... 415 | | +--rw l2vpn 416 | | | +--rw evpn 417 | | | | ..... 418 | | | +--rw vpls 419 | | | ..... 420 | | +--rw nsap 421 | | | +--rw unicast 422 | | | ..... 423 | | +--rw rtfilter 424 | | | +--rw unicast 425 | | | ..... 426 | | +--rw vpnv4 427 | | | +--rw unicast 428 | | | | ..... 429 | | | +--rw multicast 430 | | | ..... 431 | | +--rw vpnv6 432 | | +--rw unicast 433 | | | ..... 434 | | +--rw multicast 435 | | ..... 436 | +--rw session-open-mode? enumeration 437 | +--rw send-buffer-size? uint32 438 | +--rw receive-buffer-size? uint32 439 | +--rw precedence? enumeration 440 | +--rw tcp-mss? uint16 441 | +--rw ttl-security? boolean 442 | +--rw hold-time? uint16 443 | +--rw keepalive-time? uint16 444 | +--rw bgp-neighbor-state 445 | | ..... 446 | +--rw bgp-neighbor-statistics 447 | ..... 448 +--rw bgp-neighbor-groups 449 | +--rw bgp-neighbor-group* [nbr-grp-name] 450 | +--rw nbr-grp-name string 451 | +--rw remote-as uint32 452 | +--rw prefix-list? prefix-list-ref 453 | +--rw default-action? actions-enum 454 | +--rw af-specific-config 455 | | +--rw ipv4 456 | | | +--rw mdt 457 | | | | ..... 458 | | | +--rw unicast 459 | | | | ..... 460 | | | +--rw multicast 461 | | | | ..... 462 | | | +--rw mvpn 463 | | | ..... 464 | | +--rw ipv6 465 | | | +--rw unicast 466 | | | | ..... 467 | | | +--rw multicast 468 | | | | ..... 469 | | | +--rw mvpn 470 | | | ..... 471 | | +--rw l2vpn 472 | | | +--rw evpn 473 | | | | ..... 474 | | | +--rw vpls 475 | | | ..... 476 | | +--rw nsap 477 | | | +--rw unicast 478 | | | ..... 479 | | +--rw rtfilter 480 | | | +--rw unicast 481 | | | ..... 482 | | +--rw vpnv4 483 | | | +--rw unicast 484 | | | | ..... 485 | | | +--rw multicast 486 | | | ..... 487 | | +--rw vpnv6 488 | | +--rw unicast 489 | | | ..... 490 | | +--rw multicast 491 | | ..... 492 | +--rw hold-time? uint16 493 | +--rw keepalive-time? uint16 495 3.2.3. BGP RPKI 497 rpki-config is used to configure and manage BGP Origin Validation. 498 This feature is specific to IPv4 and IPv6 Address Families. It is 499 indexed by af-configuration. It contains the configuration commands 500 for the BGP RPKI Server, RPKI RTR Protocol and the BGP protocol. 501 This includes configuration for the Server address, Server 502 preference, RPKI RTR protocol specific parameters, choice of a 503 transport for RPKI RTR Protocol, and BGP specific parameters 504 including enabling and disabling of this feature for IBGP and EBGP 505 routes. 507 The structure of the RPKI configuration data model is depicted below, 508 per the same conventions used in the earlier diagrams. 510 module: bgp 511 +--rw bgp-router 512 | ..... 513 | +--rw rpki-config 514 | | +--rw cache-server-config 515 | | | ..... 516 | | +--rw validation-config 517 | | | ..... 518 | | +--rw bestpath-computation 519 | | ..... 521 3.3. Prefix Lists 523 BGP Prefix Lists are used to manipulate Prefix information carried 524 within a BGP. The prefix information carried within BGP is filtered 525 or allowed using BGP Prefix Lists. BGP Prefix Lists consists of an 526 ordered set of one or more rules that describe IPv4 or IPv6 prefixes 527 range and an associated action rule that describes whether the 528 matching prefixes should be dropped or permitted. The Prefix Lists 529 are usually applied to a BGP neighbor as part of an inbound policy 530 (applied to prefixes received by a neighbor) or an outbound policy 531 (applied to prefixes sent by a neighbor). 533 The structure of the prefix list configuration data model is depicted 534 below, per the same conventions used in the earlier diagrams. 536 module: bgp 537 ..... 538 +--rw prefix-lists 539 +--rw prefix-list [prefix-list-name] 540 +--rw prefix-list-name string 541 +--rw prefixes 542 +--rw prefix [seq-nr] 543 +--rw seq-nr uint16 544 +--rw prefix-filter 545 +--rw (ip-address-group)? 546 | ..... 547 +--rw action actions-enum 548 +--rw statistics 549 ..... 551 Prefix lists are defined in a list in a designated container. Each 552 prefix list in turn contains a list of prefixes, indexed by a 553 sequency number. Each prefix is comprised of a prefix filter, used 554 to match BGP packets, an action that is applied when a filter 555 matches, and a set of statistics that indicate how often individual 556 prefixes are applied. 558 4. BGP Yang Module 560 file "bgp@2013-07-15.yang" 562 module bgp { 563 namespace "urn:cisco:params:xml:ns:yang:bgp"; 564 // replace with IANA namespace when assigned 565 prefix bgp; 567 import ietf-inet-types { 568 prefix inet; 569 } 570 import ietf-yang-types { 571 prefix yang; 572 } 573 import ietf-routing { 574 prefix routing; 575 revision-date 2014-11-10; 576 } 578 organization 579 "Cisco Systems 580 170 West Tasman Drive 581 San Jose, CA 95134-1706 582 USA"; 583 contact 584 "Alexander Clemm alex@cisco.com 585 Keyur Patel keyupate@cisco.com 586 Aleksandr Zhdankin azhdanki@cisco.com"; 587 description 588 "This YANG module defines the generic configuration 589 data for BGP, which is common across all of the vendor 590 implementations of the protocol. It is intended that the module 591 will be extended by vendors to define vendor-specific 592 BGP configuration parameters and policies, 593 for example route maps or route policies. 595 Terms and Acronyms 597 BGP (bgp): Border Gateway Protocol 599 IP (ip): Internet Protocol 601 IPv4 (ipv4):Internet Protocol Version 4 603 IPv6 (ipv6): Internet Protocol Version 6 605 MED(med): Multi Exit Discriminator 607 IGP (igp): Interior Gateway Protocol 609 MTU (mtu) Maximum Transmission Unit 610 "; 612 revision 2015-01-14 { 613 description 614 "Initial revision."; 616 } 618 identity bgp-routing-protocol { 619 base routing:routing-protocol; 620 description 621 "This identity represents BGP routing protocol."; 622 } 624 typedef prefix-list-ref { 625 description 626 "A reference to the prefix list which a bgp-neighbor can use."; 627 type leafref { 628 path "/routing:routing/routing:routing-instance/routing:routing-protocols/routing:routing-protocol/bgp:bgp-routing/bgp:prefix-lists/bgp:prefix-list/bgp:prefix-list-name"; 629 } 630 } 632 typedef bgp-peer-admin-status { 633 description 634 "Administartive status of a BGP peer."; 635 type enumeration { 636 enum "unknown"; 637 enum "up"; 638 enum "down"; 639 } 640 } 642 typedef actions-enum { 643 description 644 "Permit/deny action."; 645 type enumeration { 646 enum "permit"; 647 enum "deny"; 648 } 649 } 651 grouping ACTIONS { 652 description 653 "Permit/deny action."; 654 leaf action { 655 type actions-enum; 656 mandatory true; 657 } 658 } 660 grouping slow-peer-config { 661 description 662 "Configure a slow-peer."; 663 container detection { 664 leaf enable { 665 type boolean; 666 default "true"; 667 } 668 leaf threshold { 669 type uint16 { 670 range "120..3600"; 671 } 672 } 673 } 674 leaf split-update-group { 675 type enumeration { 676 enum "dynamic"; 677 enum "static"; 678 } 679 } 680 } 682 grouping update-group-management { 683 description 684 "Manage peers in BGP update group."; 685 leaf split-as-override { 686 description 687 "Keeps peers with as-override in different update groups."; 688 type boolean; 689 } 690 } 692 grouping neighbour-base-af-config { 693 description 694 "A set of configuration parameters that is applicable to all neighbour address families."; 695 leaf active { 696 description 697 "Enable the address family for this neighbor."; 698 type boolean; 699 default "false"; 700 } 701 leaf advertisement-interval { 702 description 703 "Minimum interval between sending BGP routing updates."; 704 type uint32; 705 } 706 leaf allowas-in { 707 description 708 "Accept as-path with my AS present in it."; 709 type boolean; 710 default "false"; 711 } 712 leaf maximum-prefix { 713 description 714 "Maximum number of prefixes accepted from this peer."; 715 type uint32; 716 } 717 leaf next-hop-self { 718 description 719 "Enable the next hop calculation for this neighbor."; 720 type boolean; 721 default "true"; 722 } 723 leaf next-hop-unchanged { 724 description 725 "Propagate next hop unchanged for iBGP paths to this neighbour."; 726 type boolean; 727 default "true"; 728 } 730 container remove-private-as { 731 leaf remove-private-as-number { 732 description 733 "Remove private AS number from outbound updates."; 734 type boolean; 735 } 736 leaf replace-with-local-as { 737 description 738 "Replace private AS number with local AS."; 739 type boolean; 740 } 741 } 742 leaf route-reflector-client { 743 description 744 "Configure a neighbor as Route Reflector client."; 745 type boolean; 746 default "false"; 747 } 748 leaf send-community { 749 description 750 "Send Community attribute to this neighbor."; 751 type enumeration { 752 enum "both"; 753 enum "extended"; 754 enum "standard"; 755 } 756 default "standard"; 757 } 758 uses slow-peer-config; 759 leaf soo { 760 description 761 "Site-of-Origin extended community. Format is ASN:nn or IP-address:nn"; 762 type string; 763 } 764 leaf weight { 765 description 766 "Set default weight for routes from this neighbor."; 767 type uint16; 768 } 769 } 771 grouping neighbour-common-af-config { 772 description 773 "A set of configuration parameters that is applicable to all neighbour address families, 774 except of nsap and rtfilter."; 775 uses neighbour-base-af-config; 776 leaf prefix-list { 777 description 778 "Reference to the prefix list of this neighbour."; 779 type prefix-list-ref; 780 } 781 leaf soft-reconfiguration { 782 description 783 "Allow inbound soft reconfiguration."; 784 type boolean; 785 } 786 } 788 grouping neighbour-cast-af-config { 789 description 790 "A set of configuration parameters that is applicable to both unicast and multicast sub-address families."; 791 uses neighbour-common-af-config; 792 leaf propagate-dmzlink-bw { 793 description 794 "Propagate the DMZ link bandwidth."; 795 type boolean; 796 } 797 container default-originate { 798 description 799 "Originate default route to this neighbor."; 800 leaf enable { 801 type boolean; 802 default "false"; 803 } 804 } 805 } 807 grouping neighbour-ip-multicast-af-config { 808 description 809 "A set of configuration parameters that is applicable to ip multicast."; 810 uses neighbour-cast-af-config; 811 leaf route-server-client-context { 812 description 813 "Specifies Route Server client context name."; 814 type string; 815 } 816 } 818 grouping neighbour-ip-unicast-af-config { 819 description 820 "A set of configuration parameters that is applicable to ip unicast. 821 This grouping is intended to be extended by vendors as necessary to describe the vendor-specific configuration parameters."; 822 uses neighbour-ip-multicast-af-config; 823 } 825 grouping bgp-af-config { 826 description 827 "A set of configuration parameters that is applicable to all address families of the BFP router."; 828 leaf additional-paths { 829 description 830 "Additional paths in the BGP table."; 831 type enumeration { 832 enum "all"; 833 enum "best-n"; 834 enum "group-best"; 835 } 836 } 837 leaf advertise-best-external { 838 description 839 "Advertise best external path to internal peers."; 840 type boolean; 841 } 842 container aggregate-timer { 843 description 844 "Configure aggregation timer."; 845 leaf enable { 846 type boolean; 847 default "true"; 848 } 849 leaf threshold { 850 type uint16 { 851 range "6..60"; 852 } 853 } 854 } 855 container bestpath { 856 description 857 "Change the default bestpath selection."; 858 choice bestpath-selection { 859 case as-path { 860 description 861 "Configures a BGP routrer to not consider the autonomous system (AS) path during best path route selection."; 862 leaf ignore-as-path { 863 type boolean; 864 default "false"; 865 } 866 } 867 case compare-routerid { 868 description 869 "Configures a BGP routrer to compare identical routes received from different external peers 870 during the best path selection process and to select the route with the lowest router ID as the best path."; 871 leaf ignore-routerid { 872 type boolean; 873 default "false"; 874 } 875 } 876 case cost-community { 877 description 878 "Configures a BGP router to not evaluate the cost community attribute 879 during the best path selection process."; 880 leaf ignore-cost-community { 881 type boolean; 882 default "false"; 883 } 884 } 885 case igp-metric { 886 description 887 "Configures the system to ignore the IGP metric during BGP best path selection."; 888 leaf ignore-igp-metric { 889 type boolean; 890 default "false"; 891 } 892 } 893 case mad-confed { 894 description 895 "Configure a BGP routing process to compare the Multi Exit Discriminator (MED) 896 between paths learned from confederation peers."; 897 leaf enable { 898 type boolean; 899 default "false"; 900 } 901 leaf missing-as-worst { 902 description 903 "Assigns a value of infinity to routes that are missing 904 the Multi Exit Discriminator (MED) attribute, 905 making the path without a MED value the least desirable path"; 906 type boolean; 907 default "false"; 908 } 909 } 910 } 911 } 912 uses bgp-dampening; 913 leaf propagate-dmzlink-bw { 914 description 915 "Use DMZ Link Bandwidth as weight for BGP multipaths."; 916 type boolean; 917 } 918 leaf redistribute-internal { 919 description 920 "Allow redistribution of iBGP into IGPs (dangerous)"; 921 type boolean; 922 } 923 leaf scan-time { 924 description 925 "Configure background scanner interval in seconds."; 926 type uint8 { 927 range "5..60"; 928 } 929 } 930 uses slow-peer-config; 931 leaf soft-reconfig-backup { 932 description 933 "Use soft-reconfiguration inbound only when route-refresh is not negotiated."; 934 type boolean; 935 } 936 } 938 grouping bgp-af-vpn-config { 939 description 940 "A set of configuration parameters that is applicable to vpn sub-address family on the BGP router."; 941 uses bgp-af-config; 942 uses update-group-management; 943 } 945 grouping bgp-af-mvpn-config { 946 description 947 "A set of configuration parameters that is applicable to mvpn sub-address family on the BGP router."; 948 leaf scan-time { 949 description 950 "Configure background scanner interval in seconds."; 951 type uint8 { 952 range "5..60"; 953 } 954 } 955 uses slow-peer-config; 956 leaf soft-reconfig-backup { 957 description 958 "Use soft-reconfiguration inbound only when route-refresh is not negotiated."; 959 type boolean; 960 } 961 leaf propagate-dmzlink-bw { 962 description 963 "Use DMZ Link Bandwidth as weight for BGP multipaths."; 964 type boolean; 965 } 966 leaf rr-group { 967 description 968 "Extended community list name."; 969 type string; 970 } 971 uses update-group-management; 972 } 974 grouping redistribute { 975 description 976 "Redistribute information from another routing protocol. 977 This grouping is intended to be augmented by vendors to implement vendor-specific protocol redistribution configuration options."; 978 choice protocol { 979 case bgp { 980 leaf enable-bgp { 981 type boolean; 982 } 983 } 984 case ospf { 985 leaf enable-ospf { 986 type boolean; 987 } 988 } 989 case isis { 990 leaf enable-isis { 991 type boolean; 992 } 993 } 994 case connected { 995 leaf enable-connected { 996 type boolean; 997 } 998 } 999 case eigrp { 1000 leaf enable-eigrp { 1001 type boolean; 1002 } 1003 } 1004 case mobile { 1005 leaf enable-mobile { 1006 type boolean; 1007 } 1008 } 1009 case static { 1010 leaf enable-static { 1011 type boolean; 1012 } 1013 } 1014 case rip { 1015 leaf enable-rip { 1016 type boolean; 1017 } 1018 } 1019 } 1020 } 1022 grouping router-af-config { 1023 description 1024 "A set of configuration parameters that is applicable to all address families on the BGP router."; 1025 leaf aggregate-address { 1026 description 1027 "Configure BGP aggregate address."; 1028 type inet:ip-address; 1029 } 1030 leaf distance { 1031 description 1032 "Define an administrative distance."; 1033 type uint8 { 1034 range "1..255"; 1035 } 1036 } 1037 leaf network { 1038 description 1039 "Specify a network to announce via BGP."; 1040 type inet:ip-address; 1041 } 1042 uses redistribute; 1043 } 1045 grouping maximum-paths { 1046 description 1047 "Configures packet forwarding over multiple paths."; 1049 leaf number-of-path { 1050 type uint8 { 1051 range "1..32"; 1052 } 1053 } 1054 leaf ibgp-number-of-path { 1055 type uint8 { 1056 range "1..32"; 1057 } 1058 } 1059 } 1060 grouping bgp-neighbor-config { 1061 leaf remote-as { 1062 type uint32; 1063 mandatory true; 1064 } 1065 leaf prefix-list { 1066 type prefix-list-ref; 1067 } 1068 leaf default-action { 1069 type actions-enum; 1070 } 1072 leaf neighbor-group-name { 1073 description 1074 "Neighbor group name."; 1075 type string; 1076 } 1078 container af-specific-config { 1079 description 1080 "Address family specific configuration parameters for the neighbours."; 1081 container ipv4 { 1082 container mdt { 1083 uses neighbour-common-af-config; 1084 } 1085 container unicast { 1086 uses neighbour-ip-unicast-af-config; 1087 } 1088 container multicast { 1089 uses neighbour-ip-multicast-af-config; 1090 } 1091 container mvpn { 1092 uses neighbour-cast-af-config; 1093 } 1094 } 1095 container ipv6 { 1096 container unicast { 1097 uses neighbour-ip-unicast-af-config; 1098 } 1099 container multicast { 1100 uses neighbour-ip-multicast-af-config; 1101 } 1102 container mvpn { 1103 uses neighbour-common-af-config; 1104 } 1105 } 1106 container l2vpn { 1107 container evpn { 1108 uses neighbour-common-af-config; 1109 } 1110 container vpls { 1111 uses neighbour-common-af-config; 1112 } 1113 } 1114 container nsap { 1115 container unicast { 1116 uses neighbour-base-af-config; 1117 leaf prefix-list { 1118 type prefix-list-ref; 1119 } 1120 } 1121 } 1122 container rtfilter { 1123 container unicast { 1124 uses neighbour-base-af-config; 1125 leaf soft-reconfiguration { 1126 description 1127 "Allow inbound soft reconfiguration."; 1128 type boolean; 1129 } 1130 } 1131 } 1132 container vpnv4 { 1133 container unicast { 1134 uses neighbour-cast-af-config; 1135 } 1136 container multicast { 1137 uses neighbour-cast-af-config; 1138 } 1139 } 1140 container vpnv6 { 1141 container unicast { 1142 uses neighbour-cast-af-config; 1143 } 1144 container multicast { 1145 uses neighbour-cast-af-config; 1146 } 1147 } 1148 } 1149 } 1151 grouping bgp-neighbor-transport-config { 1152 leaf session-open-mode { 1153 description 1154 "Establish neighbor session using TCP Open mode."; 1155 type enumeration { 1156 enum "active"; 1157 enum "passive"; 1158 } 1159 } 1161 leaf send-buffer-size { 1162 description 1163 "Set socket BGP send buffer size."; 1164 type uint32; 1165 } 1167 leaf receive-buffer-size { 1168 description 1169 "Receive socket BGP send buffer size."; 1170 type uint32; 1171 } 1173 leaf precedence { 1174 description 1175 "Set Precedence."; 1176 type enumeration { 1177 enum "routine"; 1178 enum "immediate"; 1179 enum "flash"; 1180 enum "flash-override"; 1181 enum "critical"; 1182 enum "internet"; 1183 enum "network"; 1184 } 1185 } 1187 leaf tcp-mss { 1188 description 1189 "TCP MSS."; 1190 type uint16; 1191 } 1192 leaf ttl-security { 1193 description 1194 "TTL Security."; 1195 type boolean; 1196 } 1197 } 1199 grouping bgp-neighbor-timers { 1200 leaf hold-time { 1201 description 1202 "BGP Hold Time interval."; 1203 default 180; 1204 type uint16; 1205 } 1207 leaf keepalive-time { 1208 description 1209 "BGP Keepalive Time interval."; 1210 default 60; 1211 type uint16; 1212 } 1213 } 1215 grouping bgp-dampening { 1216 container bgp-dampening-params { 1217 description 1218 "BGP Route Flap Dampening."; 1220 leaf half-time { 1221 description 1222 "Half Time for the penalty."; 1223 type uint8 { 1224 range "1..45"; 1225 } 1226 } 1228 leaf Reuse-time { 1229 description 1230 "Reuse Time."; 1231 type uint16 { 1232 range "1..20000"; 1233 } 1234 } 1236 leaf supresss-time { 1237 description 1238 "Supress Time."; 1239 type uint16 { 1240 range "1..20000"; 1241 } 1242 } 1244 leaf max-supress-time { 1245 description 1246 "Max Supress Time"; 1247 type uint8 { 1248 range "1..255"; 1249 } 1250 } 1251 } 1252 } 1253 augment "/routing:routing/routing:routing-instance/routing:routing-protocols/routing:routing-protocol" { 1254 container bgp-routing { 1255 description 1256 "BGP routing configuration"; 1257 must "/routing:routing/routing:routing-instance/routing:routing-protocols/routing:routing-protocol/routing:type = bgp-routing-protocol"; 1258 container bgp-router { 1259 description 1260 "This is a top-level container for the BGP router."; 1261 leaf bgp-version { 1262 type string; 1263 } 1264 leaf local-as-number { 1265 type uint32; 1266 } 1267 leaf local-as-identifier { 1268 type inet:ip-address; 1269 } 1270 container router-id { 1271 description 1272 "Configures a fixed router ID for the local BGP routing process."; 1273 leaf enable { 1274 type boolean; 1275 } 1276 choice config-type { 1277 case static { 1278 leaf ip-address { 1279 type boolean; 1280 } 1281 } 1282 case auto-config { 1283 leaf enable-auto-config { 1284 type boolean; 1285 } 1286 } 1287 } 1289 } 1291 container rpki-config { 1292 description 1293 "RPKI configuration parameters."; 1294 container cache-server-config { 1295 description 1296 "Configure the RPKI cache-server parameters in rpki-server configuration mode."; 1297 choice server { 1298 case ip-address { 1299 leaf ip-address { 1300 type inet:ip-address; 1301 mandatory true; 1302 } 1303 } 1304 case host-name { 1305 leaf ip-host-address { 1306 type inet:host; 1307 mandatory true; 1308 } 1309 } 1310 } 1311 choice transport { 1312 description 1313 "Specifies a transport method for the RPKI cache."; 1314 case tcp { 1315 leaf tcp-port { 1316 type uint32; 1317 } 1318 } 1319 case ssh { 1320 leaf ssh-port { 1321 type uint32; 1322 } 1323 } 1324 } 1325 leaf user-name { 1326 type string; 1327 } 1328 leaf password { 1329 type string; 1330 } 1331 leaf preference-value { 1332 description 1333 "Specifies a preference value for the RPKI cache. 1334 Setting a lower preference value is better."; 1335 type uint8 { 1336 range "1..10"; 1338 } 1339 } 1340 leaf purge-time { 1341 description 1342 "Configures the time BGP waits to keep routes from a cache after the cache session drops. Set purge time in seconds."; 1343 type uint16 { 1344 range "30..360"; 1345 } 1346 } 1347 choice refresh-time { 1348 description 1349 "Configures the time BGP waits in between sending periodic serial queries to the cache. Set refresh-time in seconds."; 1350 case disable { 1351 leaf refresh-time-disable { 1352 type boolean; 1353 } 1354 } 1355 case set-time { 1356 leaf refresh-interval { 1357 type uint16 { 1358 range "15..3600"; 1359 } 1360 } 1361 } 1362 } 1363 choice response-time { 1364 description 1365 "Configures the time BGP waits for a response after sending a serial or reset query. Set response-time in seconds."; 1366 case disable { 1367 leaf response-time-disable { 1368 type boolean; 1369 } 1370 } 1371 case set-time { 1372 leaf response-interval { 1373 type uint16 { 1374 range "15..3600"; 1375 } 1376 } 1377 } 1378 } 1379 } 1380 container validation-config { 1381 description 1382 "Controls the behavior of RPKI prefix validation processing."; 1383 leaf enable { 1384 description 1385 "Enables RPKI origin-AS validation."; 1387 type boolean; 1388 default "true"; 1389 } 1390 leaf enable-ibgp { 1391 description 1392 "Enables the iBGP signaling of validity state through an extended-community."; 1393 type boolean; 1394 } 1395 choice validation-time { 1396 description 1397 "Sets prefix validation time (in seconds) or to set off the automatic prefix validation after an RPKI update."; 1398 case validation-off { 1399 leaf disable { 1400 type boolean; 1401 } 1402 } 1403 case set-time { 1404 leaf prefix-validation-time { 1405 description 1406 "Range in seconds."; 1407 type uint16 { 1408 range "5..60"; 1409 } 1410 } 1411 } 1412 } 1413 } 1414 container bestpath-computation { 1415 description 1416 "Configures RPKI bestpath computation options."; 1417 leaf enable { 1418 description 1419 "Enables the validity states of BGP paths to affect the path's preference in the BGP bestpath process."; 1420 type boolean; 1421 } 1422 leaf allow-invalid { 1423 description 1424 "Allows all 'invalid' paths to be considered for BGP bestpath computation."; 1425 type boolean; 1426 } 1427 } 1428 } 1429 uses bgp-neighbor-timers; 1430 container af-configuration { 1431 description 1432 "Top level container for address families specific configuration of the BGP router."; 1433 container ipv4 { 1434 container mdt { 1435 container bgp { 1436 description 1437 "BGP specific commands for ipv4-mdt address family/sub-addess family combination."; 1438 uses bgp-dampening; 1439 leaf scan-time { 1440 description 1441 "Configure background scanner interval in seconds."; 1442 type uint8 { 1443 range "5..60"; 1444 } 1445 } 1446 uses slow-peer-config; 1447 leaf soft-reconfig-backup { 1448 description 1449 "Use soft-reconfiguration inbound only when route-refresh is not negotiated."; 1450 type boolean; 1451 } 1452 leaf propagate-dmzlink-bw { 1453 description 1454 "Use DMZ Link Bandwidth as weight for BGP multipaths."; 1455 type boolean; 1456 } 1457 } 1458 } 1459 container multicast { 1460 container bgp { 1461 description 1462 "BGP specific commands for ipv4-multicast address family/sub-addess family combination."; 1463 uses bgp-af-config; 1464 } 1465 leaf auto-summary { 1466 description 1467 "Enable automatic network number summarization"; 1468 type boolean; 1469 } 1470 uses router-af-config; 1471 leaf default-metric { 1472 description 1473 "Set metric of redistributed routes."; 1474 type uint32; 1475 } 1476 } 1477 container unicast { 1478 container bgp { 1479 description 1480 "BGP specific commands for ipv4-unicast address family/sub-addess family combination."; 1481 uses bgp-af-config; 1482 leaf always-compare-med { 1483 description 1484 "Allow comparing MED from different neighbors."; 1485 type boolean; 1486 default "false"; 1487 } 1488 leaf enforce-first-as { 1489 description 1490 "Enforce the first AS for EBGP routes(default)."; 1491 type boolean; 1492 default "true"; 1493 } 1494 leaf fast-external-fallover { 1495 description 1496 "Immediately reset session if a link to a directly connected external peer goes down."; 1497 type boolean; 1498 default "true"; 1499 } 1500 leaf suppress-inactive { 1501 description 1502 "Suppress routes that are not in the routing table."; 1503 type boolean; 1504 } 1505 leaf asnotation { 1506 description 1507 "Sets the default asplain notation."; 1508 type enumeration { 1509 enum "asplain"; 1510 enum "dot"; 1511 } 1512 } 1513 leaf enable-client-to-client-reflection { 1514 description 1515 "Manages client to client route reflection."; 1516 type boolean; 1517 default "true"; 1518 } 1519 leaf cluster-id { 1520 description 1521 "Configure Route-Reflector Cluster-id."; 1522 type string; 1523 } 1524 container confederation { 1525 description 1526 "AS confederation parameters."; 1527 leaf identifier { 1528 description 1529 "Confederation identifier."; 1530 type string; 1532 } 1533 list peers { 1534 description 1535 "Confederation peers."; 1536 key "as-name"; 1537 leaf as-name { 1538 type string; 1539 } 1540 } 1541 } 1542 container consistency-checker { 1543 description 1544 "Consistency-checker configuration."; 1545 leaf enable { 1546 type boolean; 1547 } 1548 leaf interval { 1549 description 1550 "Check interval in minutes."; 1551 type uint16 { 1552 range "5..1440"; 1553 } 1554 } 1555 choice inconsistency-action { 1556 case error-message { 1557 description 1558 "Specifies that when an inconsistency is found, the system will only generate a syslog message."; 1559 leaf generate-error-message-only { 1560 type boolean; 1561 } 1562 } 1563 case autorepair { 1564 description 1565 "Specifies that when an inconsistency is found, 1566 the system will generate a syslog message and take action 1567 based on the type of inconsistency found."; 1568 leaf perform-autorepair { 1569 type boolean; 1570 } 1571 } 1572 } 1573 } 1574 leaf deterministic-med { 1575 description 1576 "If enabled it enforce the deterministic comparison of the MED value between 1577 all paths received from within the same autonomous system."; 1578 type boolean; 1579 } 1580 container graceful-restart { 1581 description 1582 "Controls the BGP graceful restart capability."; 1583 leaf enable { 1584 type boolean; 1585 } 1586 leaf restart-time { 1587 description 1588 "Sets the maximum time period (in seconds) that the local router will wait 1589 for a graceful-restart-capable neighbor to return to normal operation after a restart event occurs."; 1590 type uint16 { 1591 range "1..3600"; 1592 } 1593 default "120"; 1594 } 1595 leaf stalepath-time { 1596 description 1597 "Sets the maximum time period that the local router will hold stale paths for a restarting peer."; 1598 type uint16 { 1599 range "5..3600"; 1600 } 1601 default "360"; 1602 } 1603 } 1604 container listener-congfig { 1605 description 1606 "Associates a subnet range with a BGP peer group and activate the BGP dynamic neighbors feature."; 1607 leaf enable { 1608 type boolean; 1609 } 1610 leaf limit { 1611 description 1612 "Sets a maximum limit number of BGP dynamic subnet range neighbors."; 1613 type uint16 { 1614 range "1..5000"; 1615 } 1616 default "100"; 1617 } 1618 leaf range { 1619 description 1620 "Specifies a subnet range that is to be associated with a specified peer group."; 1621 type uint16 { 1622 range "0..32"; 1623 } 1624 } 1625 leaf peer-group { 1626 description 1627 "Specifies a BGP peer group that is to be associated with the specified subnet range."; 1629 type string; 1630 } 1631 } 1632 leaf log-neighbor-changes { 1633 description 1634 "Log neighbor up/down and reset reason."; 1635 type boolean; 1636 } 1637 leaf max-as-limit { 1638 description 1639 "Configures BGP to discard routes that have a number of autonomous system numbers in AS-path that exceed the specified value."; 1640 type uint16 { 1641 range "1..254"; 1642 } 1643 } 1644 container transport { 1645 description 1646 "Manages transport session parameters."; 1647 leaf enable-path-mtu-discovery { 1648 description 1649 "Enables transport path MTU discovery."; 1650 type boolean; 1651 default "true"; 1652 } 1653 } 1654 } 1655 leaf auto-summary { 1656 description 1657 "Enable automatic network number summarization"; 1658 type boolean; 1659 } 1660 uses router-af-config; 1661 uses maximum-paths; 1662 leaf synchronization { 1663 description 1664 "Perform IGP synchronization."; 1665 type boolean; 1666 } 1667 } 1668 container mvpn { 1669 container bgp { 1670 description 1671 "BGP specific commands for ipv4-mvpn address family/sub-addess family combination."; 1672 uses bgp-af-mvpn-config; 1673 } 1674 leaf auto-summary { 1675 description 1676 "Enable automatic network number summarization."; 1678 type boolean; 1679 } 1680 } 1681 } 1682 container ipv6 { 1683 container multicast { 1684 container bgp { 1685 description 1686 "BGP specific commands for ipv6-multicast address family/sub-addess family combination."; 1687 uses bgp-af-config; 1688 } 1689 uses router-af-config; 1690 } 1691 container unicast { 1692 container bgp { 1693 description 1694 "BGP specific commands for ipv6-unicast address family/sub-addess family combination."; 1695 uses bgp-af-config; 1696 } 1697 uses router-af-config; 1698 leaf default-metric { 1699 description 1700 "Set metric of redistributed routes."; 1701 type uint32; 1702 } 1703 uses maximum-paths; 1704 leaf synchronization { 1705 description 1706 "Perform IGP synchronization."; 1707 type boolean; 1708 } 1709 } 1710 container mvpn { 1711 container bgp { 1712 description 1713 "BGP specific commands for ipv6-mvpn address family/sub-addess family combination."; 1714 uses bgp-af-mvpn-config; 1715 } 1716 } 1717 } 1718 container l2vpn { 1719 container vpls { 1720 container bgp { 1721 description 1722 "BGP specific commands for l2vpn-vpls address family/sub-addess family combination."; 1723 leaf scan-time { 1724 description 1725 "Configure background scanner interval in seconds."; 1727 type uint8 { 1728 range "5..60"; 1729 } 1730 } 1731 uses slow-peer-config; 1732 } 1733 } 1734 } 1735 container nsap { 1736 container unicast { 1737 container bgp { 1738 description 1739 "BGP specific commands for nsap-unicast address family/sub-addess family combination."; 1740 container aggregate-timer { 1741 description 1742 "Configure Aggregation Timer."; 1743 leaf enable { 1744 type boolean; 1745 default "true"; 1746 } 1747 leaf threshold { 1748 type uint16 { 1749 range "6..60"; 1750 } 1751 } 1752 } 1753 uses bgp-dampening; 1754 leaf propagate-dmzlink-bw { 1755 description 1756 "Use DMZ Link Bandwidth as weight for BGP multipaths."; 1757 type boolean; 1758 } 1759 leaf redistribute-internal { 1760 description 1761 "Allow redistribution of iBGP into IGPs (dangerous)"; 1762 type boolean; 1763 } 1764 leaf scan-time { 1765 description 1766 "Configure background scanner interval in seconds."; 1767 type uint8 { 1768 range "5..60"; 1769 } 1770 } 1771 uses slow-peer-config; 1772 leaf soft-reconfig-backup { 1773 description 1774 "Use soft-reconfiguration inbound only when route-refresh is not negotiated."; 1776 type boolean; 1777 } 1778 } 1779 leaf default-metric { 1780 description 1781 "Set metric of redistributed routes."; 1782 type uint32; 1783 } 1784 uses maximum-paths; 1785 leaf network { 1786 description 1787 "Specify a network to announce via BGP."; 1788 type inet:ip-address; 1789 } 1790 uses redistribute; 1791 leaf synchronization { 1792 description 1793 "Perform IGP synchronization."; 1794 type boolean; 1795 } 1796 } 1797 } 1798 container rtfilter { 1799 container unicast { 1800 container bgp { 1801 description 1802 "BGP specific commands for rtfilter-unicast address family/sub-addess family combination."; 1803 uses slow-peer-config; 1804 } 1805 uses maximum-paths; 1806 } 1807 } 1808 container vpnv4 { 1809 container unicast { 1810 container bgp { 1811 description 1812 "BGP specific commands for vpnv4-unicast address family/sub-addess family combination."; 1813 uses bgp-af-vpn-config; 1814 } 1815 uses maximum-paths; 1816 } 1817 container multicast { 1818 container bgp { 1819 description 1820 "BGP specific commands for vpnv4-multicast address family/sub-addess family combination."; 1821 uses bgp-af-vpn-config; 1822 } 1823 uses maximum-paths; 1825 } 1826 } 1827 container vpnv6 { 1828 container unicast { 1829 container bgp { 1830 description 1831 "BGP specific commands for vpnv6-unicast address family/sub-addess family combination."; 1832 uses bgp-af-vpn-config; 1833 } 1834 } 1835 } 1836 } 1837 } 1838 container bgp-neighbors { 1839 description 1840 "The top level container for the list of neighbours of the BGP router."; 1841 list bgp-neighbor { 1842 key "peer-address"; 1843 leaf peer-address { 1844 type inet:ip-address; 1845 mandatory true; 1846 } 1847 uses bgp-neighbor-config; 1848 uses bgp-neighbor-transport-config; 1849 uses bgp-neighbor-timers; 1851 container bgp-neighbor-state { 1852 description 1853 "The operational parameters describing the neighbour state. 1854 It is intended that this container may be augmented by vendors to reflect the vendor-specific operational state parameters."; 1855 leaf adminStatus { 1856 type bgp-peer-admin-status; 1857 } 1858 leaf in-lastupdatetime { 1859 type yang:timestamp; 1860 } 1861 } 1862 container bgp-neighbor-statistics { 1863 description 1864 "The operational parameters describing the neighbour statistics. 1865 It is intended that this container may be augmented by vendors to reflect the vendor-specific staistical parameters."; 1866 leaf nr-in-updates { 1867 type uint32; 1868 } 1869 leaf nr-out-updates { 1870 type uint32; 1871 } 1872 } 1874 } 1875 } 1876 container bgp-neighbor-groups { 1877 description 1878 "The top level container for the list of neighbour groups of the BGP router."; 1879 list bgp-neighbor-group { 1880 key "nbr-grp-name"; 1881 leaf nbr-grp-name { 1882 type string; 1883 mandatory true; 1884 } 1885 uses bgp-neighbor-config; 1886 uses bgp-neighbor-timers; 1887 } 1888 } 1889 container prefix-lists { 1890 description 1891 "Contains all prefix lists defined 1892 on a router."; 1893 list prefix-list { 1894 key "prefix-list-name"; 1895 description 1896 "A prefix list."; 1897 leaf prefix-list-name { 1898 type string; 1899 } 1900 container prefixes { 1901 list prefix { 1902 key "seq-nr"; 1903 description 1904 "A prefix is a rule with a BGP filter. 1905 The left hand side of the rule is the prefix filter. 1906 It specifies a set of IP addresses. 1907 If a BGP announcement contains an address that matches, the 1908 rule is applied. The right hand side of the rule specifies 1909 the action that is to be applied."; 1910 leaf seq-nr { 1911 type uint16; 1912 description 1913 "Sequence number of the rule. 1914 The sequence number is included for compatibility purposes 1915 with CLI; from a machine-to-machine interface perspective, 1916 it would strictly speaking not be required as list elements 1917 can be arranged in a particular order."; 1918 } 1919 container prefix-filter { 1920 choice ip-address-group { 1921 case ip-address { 1922 leaf ip-address { 1923 type inet:ip-address; 1924 mandatory true; 1925 } 1926 } 1927 case prefix { 1928 leaf prefix { 1929 type inet:ip-prefix; 1930 mandatory true; 1931 } 1932 } 1933 case host { 1934 leaf ip-host-address { 1935 type inet:host; 1936 mandatory true; 1937 } 1938 } 1939 case ip-range { 1940 leaf lower { 1941 type inet:ip-address; 1942 } 1943 leaf upper { 1944 type inet:ip-address; 1945 } 1946 } 1947 } 1948 leaf action { 1949 type actions-enum; 1950 mandatory true; 1951 description 1952 "permit/deny action"; 1953 } 1954 container statistics { 1955 leaf prefix-hit-count { 1956 type uint32; 1957 config false; 1958 } 1959 } 1960 } 1961 } 1962 } 1963 } 1964 } 1965 } 1966 } 1967 } 1969 1970 5. IANA Considerations 1972 6. Security Considerations 1974 The transport protocol used for sending the BGP data MUST support 1975 authentication and SHOULD support encryption. The data-model by 1976 itself does not create any security implications. 1978 This draft does not change any underlying security issues inherent in 1979 [I-D.ietf-netmod-routing-cfg]. 1981 7. Acknowledgements 1983 The authors would like to thank Adam Simpson and Gunter Vandevelde 1984 for their detail reviews and comments. 1986 8. Contributors 1988 In addition to the authors listed on the front page, the following 1989 individuals have also helped to shape this document: 1991 Dhanendra Jain 1993 9. References 1995 9.1. Normative References 1997 [I-D.ietf-netmod-routing-cfg] 1998 Lhotka, L., "A YANG Data Model for Routing Management", 1999 draft-ietf-netmod-routing-cfg-15 (work in progress), May 2000 2014. 2002 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2003 Requirement Levels", BCP 14, RFC 2119, March 1997. 2005 [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, 2006 June 1999. 2008 [RFC2842] Chandra, R. and J. Scudder, "Capabilities Advertisement 2009 with BGP-4", RFC 2842, May 2000. 2011 [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC 2012 Text on Security Considerations", BCP 72, RFC 3552, July 2013 2003. 2015 [RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway 2016 Protocol 4 (BGP-4)", RFC 4271, January 2006. 2018 [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private 2019 Networks (VPNs)", RFC 4364, February 2006. 2021 [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, 2022 "Multiprotocol Extensions for BGP-4", RFC 4760, January 2023 2007. 2025 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 2026 Network Configuration Protocol (NETCONF)", RFC 6020, 2027 October 2010. 2029 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 2030 Bierman, "Network Configuration Protocol (NETCONF)", RFC 2031 6241, June 2011. 2033 9.2. Informative References 2035 [RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement 2036 with BGP-4", RFC 5492, February 2009. 2038 Authors' Addresses 2040 Aleksandr Zhdankin 2041 Cisco 2042 170 W. Tasman Drive 2043 San Jose, CA 95134 2044 USA 2046 Email: azhdanki@cisco.com 2048 Keyur Patel 2049 Cisco 2050 170 W. Tasman Drive 2051 San Jose, CA 95134 2052 USA 2054 Email: keyupate@cisco.com 2056 Alexander Clemm 2057 Cisco 2058 170 W. Tasman Drive 2059 San Jose, CA 95134 2060 USA 2062 Email: alex@cisco.com 2063 Susan Hares 2064 Huawei 2065 7453 Hickory Hill 2066 Saline, MI 48176 2067 USA 2069 Email: shares@ndzh.com 2071 Mahesh Jethanandani 2072 Ciena 2073 1741 Technology Drive 2074 San Jose, CA 95110 2075 USA 2077 Email: mjethanandani@gmail.com 2079 Xyfeng Liu 2080 Ericsson 2081 1595 Spring Hill Road, Suite 500 2082 Vienna, VA 22182 2083 USA 2085 Email: xufeng.liu@ericsson.com