| < draft-ietf-idr-bgp-model-08.txt | draft-ietf-idr-bgp-model-09.txt > | |||
|---|---|---|---|---|
| Interdomain Routing M. Jethanandani | Interdomain Routing M. Jethanandani | |||
| Internet-Draft VMware | Internet-Draft Kloud Services | |||
| Intended status: Standards Track K. Patel | Intended status: Standards Track K. Patel | |||
| Expires: August 28, 2020 Arrcus | Expires: December 30, 2020 Arrcus | |||
| S. Hares | S. Hares | |||
| Huawei | Huawei | |||
| J. Haas | J. Haas | |||
| Juniper Networks | Juniper Networks | |||
| February 25, 2020 | June 28, 2020 | |||
| BGP YANG Model for Service Provider Networks | BGP YANG Model for Service Provider Networks | |||
| draft-ietf-idr-bgp-model-08 | draft-ietf-idr-bgp-model-09 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model for configuring and managing | This document defines a YANG data model for configuring and managing | |||
| BGP, including protocol, policy, and operational aspects, such as | BGP, including protocol, policy, and operational aspects, such as | |||
| RIB, based on data center, carrier and content provider operational | RIB, based on data center, carrier and content provider operational | |||
| requirements. | requirements. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on August 28, 2020. | This Internet-Draft will expire on December 30, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 34 ¶ | skipping to change at page 2, line 34 ¶ | |||
| 2.3.5. Post route advertisements per-neighbor . . . . . . . 12 | 2.3.5. Post route advertisements per-neighbor . . . . . . . 12 | |||
| 3. Relation to other YANG data models . . . . . . . . . . . . . 12 | 3. Relation to other YANG data models . . . . . . . . . . . . . 12 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.1. URI Registration . . . . . . . . . . . . . . . . . . . . 14 | 5.1. URI Registration . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.2. YANG Module Name Registration . . . . . . . . . . . . . . 14 | 5.2. YANG Module Name Registration . . . . . . . . . . . . . . 14 | |||
| 6. YANG modules . . . . . . . . . . . . . . . . . . . . . . . . 14 | 6. YANG modules . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7. Structure of the YANG modules . . . . . . . . . . . . . . . . 15 | 7. Structure of the YANG modules . . . . . . . . . . . . . . . . 15 | |||
| 7.1. Main module and submodules for base items . . . . . . . . 16 | 7.1. Main module and submodules for base items . . . . . . . . 16 | |||
| 7.2. BGP types . . . . . . . . . . . . . . . . . . . . . . . . 64 | 7.2. BGP types . . . . . . . . . . . . . . . . . . . . . . . . 64 | |||
| 7.3. BGP policy data . . . . . . . . . . . . . . . . . . . . . 77 | 7.3. BGP policy data . . . . . . . . . . . . . . . . . . . . . 76 | |||
| 7.4. RIB modules . . . . . . . . . . . . . . . . . . . . . . . 87 | 7.4. RIB modules . . . . . . . . . . . . . . . . . . . . . . . 86 | |||
| 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 120 | 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 120 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 120 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 120 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 120 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 121 | |||
| 10.1. Normative references . . . . . . . . . . . . . . . . . . 120 | 10.1. Normative references . . . . . . . . . . . . . . . . . . 121 | |||
| 10.2. Informative references . . . . . . . . . . . . . . . . . 124 | 10.2. Informative references . . . . . . . . . . . . . . . . . 124 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 125 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 125 | |||
| A.1. Creating BGP Instance . . . . . . . . . . . . . . . . . . 125 | A.1. Creating BGP Instance . . . . . . . . . . . . . . . . . . 125 | |||
| A.2. Neighbor Address Family Configuration . . . . . . . . . . 126 | A.2. Neighbor Address Family Configuration . . . . . . . . . . 126 | |||
| A.3. IPv6 Neighbor Configuration . . . . . . . . . . . . . . . 128 | A.3. IPv6 Neighbor Configuration . . . . . . . . . . . . . . . 128 | |||
| A.4. VRF Configuration . . . . . . . . . . . . . . . . . . . . 129 | A.4. VRF Configuration . . . . . . . . . . . . . . . . . . . . 129 | |||
| Appendix B. How to add a new AFI and Augment a Module . . . . . 131 | Appendix B. How to add a new AFI and Augment a Module . . . . . 131 | |||
| Appendix C. How to deviate a module . . . . . . . . . . . . . . 133 | Appendix C. How to deviate a module . . . . . . . . . . . . . . 133 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 133 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 133 | |||
| skipping to change at page 3, line 38 ¶ | skipping to change at page 3, line 38 ¶ | |||
| Confederations for BGP [RFC5065], BGP Route Flap Damping [RFC2439], | Confederations for BGP [RFC5065], BGP Route Flap Damping [RFC2439], | |||
| Graceful Restart Mechanism for BGP [RFC4724], BGP Prefix Origin | Graceful Restart Mechanism for BGP [RFC4724], BGP Prefix Origin | |||
| Validation [RFC6811], and Advertisement of Multiple Paths in BGP | Validation [RFC6811], and Advertisement of Multiple Paths in BGP | |||
| [RFC7911]. | [RFC7911]. | |||
| Along with configuration of base BGP features, this model also | Along with configuration of base BGP features, this model also | |||
| addresses policy configuration, by providing "hooks" for applying | addresses policy configuration, by providing "hooks" for applying | |||
| policies, and also defining BGP-specific policy features. The BGP | policies, and also defining BGP-specific policy features. The BGP | |||
| policy features are intended to be used with the general routing | policy features are intended to be used with the general routing | |||
| policy model defined in A YANG Data Model for Routing Policy | policy model defined in A YANG Data Model for Routing Policy | |||
| Management [I-D.ietf-rtgwg-policy-model]. The model conforms to the | Management [I-D.ietf-rtgwg-policy-model]. | |||
| NMDA [RFC8342] architecture and has support for configuring | ||||
| Bidirectional Forward Detection (BFD) [RFC5880] for fast next hop | The model conforms to the NMDA [RFC8342] architecture. It has | |||
| liveliness check. | support for securing BGP sessions using TCP-AO [RFC5925] or TCP-MD5, | |||
| and for configuring Bidirectional Forward Detection (BFD) [RFC5880] | ||||
| for fast next hop liveliness check. | ||||
| For the base BGP features, the focus of the model described in this | For the base BGP features, the focus of the model described in this | |||
| document is on providing configuration and operational state | document is on providing configuration and operational state | |||
| information relating to: | information relating to: | |||
| o The global BGP instance, and neighbors whose configuration is | o The global BGP instance, and neighbors whose configuration is | |||
| specified individually, or templated with the use of peer-groups. | specified individually, or templated with the use of peer-groups. | |||
| o The address families that are supported by peers, and the global | o The address families that are supported by peers, and the global | |||
| configuration which relates to them. | configuration which relates to them. | |||
| skipping to change at page 4, line 40 ¶ | skipping to change at page 4, line 43 ¶ | |||
| 1.2. Note to RFC Editor | 1.2. Note to RFC Editor | |||
| This document uses several placeholder values throughout the | This document uses several placeholder values throughout the | |||
| document. Please replace them as follows and remove this note before | document. Please replace them as follows and remove this note before | |||
| publication. | publication. | |||
| RFC XXXX, where XXXX is the number assigned to this document at the | RFC XXXX, where XXXX is the number assigned to this document at the | |||
| time of publication. | time of publication. | |||
| 2020-02-24 with the actual date of the publication of this document. | 2020-06-28 with the actual date of the publication of this document. | |||
| RFC ZZZZ, where ZZZZ is the number assigned to A YANG Data Model for | RFC ZZZZ, where ZZZZ is the number assigned to A YANG Data Model for | |||
| Routing Policy Management [I-D.ietf-rtgwg-policy-model]. | Routing Policy Management [I-D.ietf-rtgwg-policy-model]. | |||
| RFC AAAA, where AAAA is the number assigned to BGP Monitoring | ||||
| Protocol [RFC7854]. | ||||
| RFC BBBB, where BBBB is the number assigned to YANG Data Model for | RFC BBBB, where BBBB is the number assigned to YANG Data Model for | |||
| Bidirectional Forward Detection [I-D.ietf-bfd-yang]. | Bidirectional Forward Detection [I-D.ietf-bfd-yang]. | |||
| 1.3. Terminology | 1.3. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| skipping to change at page 7, line 50 ¶ | skipping to change at page 7, line 50 ¶ | |||
| optional, with neighbor specific configuration being the most | optional, with neighbor specific configuration being the most | |||
| specific or lowest level, followed by peer-group, and finally global. | specific or lowest level, followed by peer-group, and finally global. | |||
| Global configuration options reflect a subset of the peer-group or | Global configuration options reflect a subset of the peer-group or | |||
| neighbor specific configuration options which are relevant to the | neighbor specific configuration options which are relevant to the | |||
| entire BGP instance. | entire BGP instance. | |||
| The model makes the simplifying assumption that most of the | The model makes the simplifying assumption that most of the | |||
| configuration items are available at all levels of the hierarchy. | configuration items are available at all levels of the hierarchy. | |||
| That is, very little configuration is specific to a particular level | That is, very little configuration is specific to a particular level | |||
| in the hierarchy, other than obvious items such as "group-name" only | in the hierarchy, other than obvious items such as "group-name" only | |||
| being available for the peer group-level configuration. A notable | being available for the peer group-level config. A notable exception | |||
| exception is for sub-address family configuration where some items | is for sub-address family configuration where some items are only | |||
| are only applicable for a given AFI-SAFI combination. | applicable for a given AFI-SAFI combination. | |||
| In order to allow common configuration to be applied to a set of | In order to allow common configuration to be applied to a set of | |||
| neighbors, all neighbor configuration options are available within a | neighbors, all neighbor configuration options are available within a | |||
| peer-group. A neighbor is associated to a particular peer-group | peer-group. A neighbor is associated to a particular peer-group | |||
| through the use of a peer-group leaf (which provides a reference to a | through the use of a peer-group leaf (which provides a reference to a | |||
| configured item in the peer-group list). | configured item in the peer-group list). | |||
| Address-family configuration is made available in multiple points | Address-family configuration is made available in multiple points | |||
| within the model - primarily within the global container, where | within the model - primarily within the global container, where | |||
| instance-wide configuration can be set (for example, global protocol | instance-wide configuration can be set (for example, global protocol | |||
| skipping to change at page 10, line 18 ¶ | skipping to change at page 10, line 18 ¶ | |||
| o on a per-afi-safi basis within a neighbor or peer-group context, | o on a per-afi-safi basis within a neighbor or peer-group context, | |||
| where the policy is specific to the AFI-SAFI for a a specific | where the policy is specific to the AFI-SAFI for a a specific | |||
| neighbor or group. | neighbor or group. | |||
| module: ietf-bgp-policy | module: ietf-bgp-policy | |||
| augment /rpol:routing-policy/rpol:defined-sets: | augment /rpol:routing-policy/rpol:defined-sets: | |||
| +--rw bgp-defined-sets | +--rw bgp-defined-sets | |||
| ... | ... | |||
| augment /rpol:routing-policy/rpol:policy-definitions | augment /rpol:routing-policy/rpol:policy-definitions | |||
| /rpol:policy-definition/rpol:statements/rpol:statement | /rpol:policy-definition/rpol:policy-statements | |||
| /rpol:conditions: | /rpol:statement/rpol:conditions: | |||
| +--rw bgp-conditions | +--rw bgp-conditions | |||
| ... | ... | |||
| augment /rpol:routing-policy/rpol:policy-definitions | augment /rpol:routing-policy/rpol:policy-definitions | |||
| /rpol:policy-definition/rpol:statements/rpol:statement | /rpol:policy-definition/rpol:policy-statements | |||
| /rpol:actions: | /rpol:statement/rpol:actions: | |||
| +--rw bgp-actions | +--rw bgp-actions | |||
| ... | ... | |||
| 2.3. BGP RIB overview | 2.3. BGP RIB overview | |||
| The RIB data model represents the BGP RIB contents. The model | The RIB data model represents the BGP RIB contents. The model | |||
| supports five logical RIBs per address family. | supports five logical RIBs per address family. | |||
| A abridged version of the tree shows the RIB portion of the tree | A abridged version of the tree shows the RIB portion of the tree | |||
| diagram. | diagram. | |||
| skipping to change at page 15, line 34 ¶ | skipping to change at page 15, line 34 ¶ | |||
| including BGP policy | including BGP policy | |||
| o ietf-bgp-policy - BGP-specific policy data definitions for use | o ietf-bgp-policy - BGP-specific policy data definitions for use | |||
| with [I-D.ietf-rtgwg-policy-model] (described in more detail | with [I-D.ietf-rtgwg-policy-model] (described in more detail | |||
| Section 2.2) | Section 2.2) | |||
| 7. Structure of the YANG modules | 7. Structure of the YANG modules | |||
| The YANG model can be subdivided between the main module for base | The YANG model can be subdivided between the main module for base | |||
| items, types, policy data, and the RIB module. It references BGP | items, types, policy data, and the RIB module. It references BGP | |||
| Communities Attribute [RFC1997], , Route Refresh Capability for BGP-4 | Communities Attribute [RFC1997], Route Refresh Capability for BGP-4 | |||
| [RFC2918], , NOPEER Community for BGP [RFC3765], BGP/MPLS IP Virtual | [RFC2918], , NOPEER Community for BGP [RFC3765], BGP/MPLS IP Virtual | |||
| Private Networks (VPNs) [RFC4364], BGP-MPLS IP Virtual Private | Private Networks (VPNs) [RFC4364], BGP-MPLS IP Virtual Private | |||
| Network (VPN) Extension for IPv6 VPN [RFC4659], Graceful Restart | Network (VPN) Extension for IPv6 VPN [RFC4659], Graceful Restart | |||
| Mechanism for BGP [RFC4724], Multiprotocol Extenstions for BGP-4 | Mechanism for BGP [RFC4724], Multiprotocol Extenstions for BGP-4 | |||
| [RFC4760], Virtual Private LAN Service (VPLS) Using BGP for Auto- | [RFC4760], Virtual Private LAN Service (VPLS) Using BGP for Auto- | |||
| Discovery and Signaling [RFC4761], Autonomous System Configuration | Discovery and Signaling [RFC4761], Autonomous System Configuration | |||
| for BGP [RFC5065], The Generalized TTL Security Mechanism (GTSM) | for BGP [RFC5065], The Generalized TTL Security Mechanism (GTSM) | |||
| [RFC5082], Bidirectional Forward Detection (BFD) [RFC5880], | [RFC5082], Bidirectional Forward Detection (BFD) [RFC5880], | |||
| Bidirectional Forward Detection for IPv4 and IPv6 (Single Hop) | Bidirectional Forward Detection for IPv4 and IPv6 (Single Hop) | |||
| [RFC5881], Bidirectional Forwarding Detection (BFD) for Multihop | [RFC5881], Bidirectional Forwarding Detection (BFD) for Multihop | |||
| Paths [RFC5883], The TCP Authentication Option [RFC5925], BGP | Paths [RFC5883], The TCP Authentication Option [RFC5925], BGP | |||
| Encodings and Procedures for Multicast in MPLS/BGP IP VPNs [RFC6514], | Encodings and Procedures for Multicast in MPLS/BGP IP VPNs [RFC6514], | |||
| BGP Support for Four-Octet Autonomous System (AS) Number Space | BGP Support for Four-Octet Autonomous System (AS) Number Space | |||
| [RFC6793], Advertisement of Multiple Paths in BGP [RFC7911], YANG Key | [RFC6793], Advertisement of Multiple Paths in BGP [RFC7911], YANG Key | |||
| Chain [RFC8177], and Carrying Label Information in BGP-4 [RFC8277] | Chain [RFC8177], and Carrying Label Information in BGP-4 [RFC8277]. | |||
| YANG Model for Transmission Control Protocol (TCP) Configuration | ||||
| [I-D.scharf-tcpm-yang-tcp]. | ||||
| 7.1. Main module and submodules for base items | 7.1. Main module and submodules for base items | |||
| <CODE BEGINS> file "ietf-bgp@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp@2020-06-28.yang" | |||
| module ietf-bgp { | module ietf-bgp { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bgp"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bgp"; | |||
| prefix bgp; | prefix bgp; | |||
| /* | /* | |||
| * Import and Include | * Import and Include | |||
| */ | */ | |||
| import ietf-routing { | import ietf-routing { | |||
| skipping to change at page 17, line 16 ¶ | skipping to change at page 17, line 16 ¶ | |||
| reference | reference | |||
| "RFC 8177: YANG Key Chain."; | "RFC 8177: YANG Key Chain."; | |||
| } | } | |||
| import ietf-tcp { | import ietf-tcp { | |||
| prefix tcp; | prefix tcp; | |||
| reference | reference | |||
| "I-D.scharf-tcpm-yang-tcp: Transmission Control Protocol (TCP) | "I-D.scharf-tcpm-yang-tcp: Transmission Control Protocol (TCP) | |||
| YANG Model."; | YANG Model."; | |||
| } | } | |||
| include ietf-bgp-common { | include ietf-bgp-common { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-common-multiprotocol { | include ietf-bgp-common-multiprotocol { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-common-structure { | include ietf-bgp-common-structure { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-neighbor { | include ietf-bgp-neighbor { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-peer-group { | include ietf-bgp-peer-group { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-rib-types { | include ietf-bgp-rib-types { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-rib { | include ietf-bgp-rib { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-rib-ext { | include ietf-bgp-rib-ext { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-rib-attributes { | include ietf-bgp-rib-attributes { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-rib-table-attributes { | include ietf-bgp-rib-table-attributes { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| include ietf-bgp-rib-tables { | include ietf-bgp-rib-tables { | |||
| revision-date 2020-02-24; | revision-date 2020-06-28; | |||
| } | } | |||
| organization | organization | |||
| "IETF IDR Working Group"; | "IETF IDR Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/idr> | "WG Web: <http://tools.ietf.org/wg/idr> | |||
| WG List: <idr@ietf.org> | WG List: <idr@ietf.org> | |||
| Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | |||
| Keyur Patel (keyur at arrcus.com), | Keyur Patel (keyur at arrcus.com), | |||
| skipping to change at page 19, line 8 ¶ | skipping to change at page 19, line 8 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXXX, BGP Model for Service Provider Network "; | "RFC XXXX, BGP Model for Service Provider Network "; | |||
| } | } | |||
| /* | /* | |||
| * Identity | * Identity | |||
| */ | */ | |||
| skipping to change at page 25, line 11 ¶ | skipping to change at page 25, line 11 ¶ | |||
| only"; | only"; | |||
| reference | reference | |||
| "RFC 8177: YANG Key Chain."; | "RFC 8177: YANG Key Chain."; | |||
| } | } | |||
| description | description | |||
| "Uses TCP-MD5 to secure the session. Parameters for | "Uses TCP-MD5 to secure the session. Parameters for | |||
| those are defined as a grouping in the TCP YANG | those are defined as a grouping in the TCP YANG | |||
| model."; | model."; | |||
| reference | reference | |||
| "RFC 5925 - The TCP Authentication Option."; | "RFC 5925: The TCP Authentication Option."; | |||
| } | } | |||
| case ipsec { | case ipsec { | |||
| leaf sa { | leaf sa { | |||
| type string; | type string; | |||
| description | description | |||
| "Security Association (SA) name."; | "Security Association (SA) name."; | |||
| } | } | |||
| description | description | |||
| "Currently, the IPsec/IKE YANG model has no | "Currently, the IPsec/IKE YANG model has no | |||
| skipping to change at page 32, line 6 ¶ | skipping to change at page 32, line 6 ¶ | |||
| leaf output { | leaf output { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The number of messages queued to be sent to the | "The number of messages queued to be sent to the | |||
| peer"; | peer"; | |||
| } | } | |||
| } | } | |||
| action clear { | action clear { | |||
| if-feature "bt:clear-statistics"; | if-feature "bt:clear-statistics"; | |||
| description | description | |||
| "Clear statistics action command."; | "Clear statistics action command. | |||
| Execution of this command should result in all the | ||||
| counters to be cleared and set to 0."; | ||||
| input { | input { | |||
| leaf clear-at { | leaf clear-at { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time when the clear action needs to be | "Time when the clear action needs to be | |||
| executed."; | executed."; | |||
| } | } | |||
| } | } | |||
| output { | output { | |||
| skipping to change at page 35, line 12 ¶ | skipping to change at page 35, line 15 ¶ | |||
| } | } | |||
| description | description | |||
| "Interface specific parameters."; | "Interface specific parameters."; | |||
| } | } | |||
| uses rib; | uses rib; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-common@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-common@2020-06-28.yang" | |||
| submodule ietf-bgp-common { | submodule ietf-bgp-common { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix bgp; | prefix bgp; | |||
| } | } | |||
| import ietf-bgp-types { | import ietf-bgp-types { | |||
| prefix bt; | prefix bt; | |||
| reference | reference | |||
| "RFC XXXX: BGP Model for Service Provider Network."; | "RFC XXXX: BGP Model for Service Provider Network."; | |||
| skipping to change at page 36, line 25 ¶ | skipping to change at page 36, line 28 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXXX, BGP Model for Service Provider Network."; | "RFC XXXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| grouping neighbor-group-timers-config { | grouping neighbor-group-timers-config { | |||
| description | description | |||
| "Config parameters related to timers associated with the BGP | "Config parameters related to timers associated with the BGP | |||
| peer"; | peer"; | |||
| skipping to change at page 42, line 4 ¶ | skipping to change at page 42, line 8 ¶ | |||
| description | description | |||
| "Wait for peers to issue requests to open a BGP session, | "Wait for peers to issue requests to open a BGP session, | |||
| rather than initiating sessions from the local router."; | rather than initiating sessions from the local router."; | |||
| } | } | |||
| leaf local-address { | leaf local-address { | |||
| type union { | type union { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| type leafref { | type leafref { | |||
| path "../../../../interfaces/interface/name"; | path "../../../../interfaces/interface/name"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Set the local IP (either IPv4 or IPv6) address to use for | "Set the local IP (either IPv4 or IPv6) address to use for | |||
| the session when sending BGP update messages. This may be | the session when sending BGP update messages. This may be | |||
| expressed as either an IP address or reference to the name | expressed as either an IP address or reference to the name | |||
| of an interface."; | of an interface."; | |||
| } | } | |||
| // TODO: Better form of authentication of the BGP session should | ||||
| // be added here. It can be in the form of TCP-AO [RFC 5925], | ||||
| // IPsec, or any other protocol deemed desirable. | ||||
| leaf auth-password { | leaf auth-password { | |||
| type string; | type string; | |||
| description | description | |||
| "Configures an MD5 authentication password for use with | "Configures an MD5 authentication password for use with | |||
| neighboring devices."; | neighboring devices."; | |||
| } | } | |||
| } | } | |||
| grouping graceful-restart-config { | grouping graceful-restart-config { | |||
| description | description | |||
| skipping to change at page 46, line 4 ¶ | skipping to change at page 46, line 6 ¶ | |||
| grouping state { | grouping state { | |||
| description | description | |||
| "Grouping containing common counters relating to prefixes and | "Grouping containing common counters relating to prefixes and | |||
| paths"; | paths"; | |||
| leaf total-paths { | leaf total-paths { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "Total number of BGP paths within the context"; | "Total number of BGP paths within the context"; | |||
| } | } | |||
| leaf total-prefixes { | leaf total-prefixes { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "Total number of BGP prefixes received within the context"; | "Total number of BGP prefixes received within the context"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-common-multiprotocol@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-common-multiprotocol@2020-06-28.yang" | |||
| submodule ietf-bgp-common-multiprotocol { | submodule ietf-bgp-common-multiprotocol { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix bgp; | prefix bgp; | |||
| } | } | |||
| import ietf-bgp-types { | import ietf-bgp-types { | |||
| prefix bt; | prefix bt; | |||
| } | } | |||
| import ietf-routing-policy { | import ietf-routing-policy { | |||
| skipping to change at page 47, line 19 ¶ | skipping to change at page 47, line 22 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXX, BGP Model for Service Provider Network."; | "RFC XXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| grouping mp-afi-safi-graceful-restart-config { | grouping mp-afi-safi-graceful-restart-config { | |||
| description | description | |||
| "BGP graceful restart parameters that apply on a per-AFI-SAFI | "BGP graceful restart parameters that apply on a per-AFI-SAFI | |||
| basis"; | basis"; | |||
| skipping to change at page 52, line 36 ¶ | skipping to change at page 52, line 38 ¶ | |||
| // Config groupings for common groups | // Config groupings for common groups | |||
| grouping mp-all-afi-safi-common-prefix-limit-config { | grouping mp-all-afi-safi-common-prefix-limit-config { | |||
| description | description | |||
| "Configuration parameters relating to prefix-limits for an | "Configuration parameters relating to prefix-limits for an | |||
| AFI-SAFI"; | AFI-SAFI"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-common-structure@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-common-structure@2020-06-28.yang" | |||
| submodule ietf-bgp-common-structure { | submodule ietf-bgp-common-structure { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix bgp; | prefix bgp; | |||
| } | } | |||
| import ietf-routing-policy { | import ietf-routing-policy { | |||
| prefix rpol; | prefix rpol; | |||
| reference | reference | |||
| "RFC ZZZZ, A YANG Data Model for Routing Policy Management"; | "RFC ZZZZ, A YANG Data Model for Routing Policy Management"; | |||
| skipping to change at page 53, line 46 ¶ | skipping to change at page 53, line 47 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXX, BGP Model for Service Provider Network."; | "RFC XXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| grouping structure-neighbor-group-logging-options { | grouping structure-neighbor-group-logging-options { | |||
| description | description | |||
| "Structural grouping used to include error handling | "Structural grouping used to include error handling | |||
| configuration and state for both BGP neighbors and groups"; | configuration and state for both BGP neighbors and groups"; | |||
| container logging-options { | container logging-options { | |||
| description | description | |||
| "Logging options for events related to the BGP neighbor or | "Logging options for events related to the BGP neighbor or | |||
| group"; | group"; | |||
| leaf log-neighbor-state-changes { | leaf log-neighbor-state-changes { | |||
| type boolean; | type boolean; | |||
| skipping to change at page 55, line 34 ¶ | skipping to change at page 55, line 37 ¶ | |||
| Full Mesh."; | Full Mesh."; | |||
| } | } | |||
| leaf no-client-reflect { | leaf no-client-reflect { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "When set to 'true', this disables route redistribution | "When set to 'true', this disables route redistribution | |||
| by the Route Reflector. It is set 'true' when the client is | by the Route Reflector. It is set 'true' when the client is | |||
| fully meshed to prevent sending of redundant route | fully meshed to prevent sending of redundant route | |||
| advertisements."; | advertisements."; | |||
| reference | ||||
| "TODO: Add reference when IETF writes a draft describing | ||||
| this."; | ||||
| } | } | |||
| leaf route-reflector-client { | leaf route-reflector-client { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Configure the neighbor as a route reflector client."; | "Configure the neighbor as a route reflector client."; | |||
| reference | reference | |||
| "RFC 4456: BGP Route Reflection: An Alternative to | "RFC 4456: BGP Route Reflection: An Alternative to | |||
| Full Mesh."; | Full Mesh."; | |||
| } | } | |||
| skipping to change at page 57, line 34 ¶ | skipping to change at page 57, line 33 ¶ | |||
| } | } | |||
| description | description | |||
| "A reference to a routing policy which can be used to | "A reference to a routing policy which can be used to | |||
| restrict the prefixes for which add-paths is enabled"; | restrict the prefixes for which add-paths is enabled"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-peer-group@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-peer-group@2020-06-28.yang" | |||
| submodule ietf-bgp-peer-group { | submodule ietf-bgp-peer-group { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix bgp; | prefix bgp; | |||
| } | } | |||
| import ietf-routing-policy { | import ietf-routing-policy { | |||
| prefix rpol; | prefix rpol; | |||
| } | } | |||
| import ietf-bgp-types { | import ietf-bgp-types { | |||
| skipping to change at page 58, line 44 ¶ | skipping to change at page 58, line 44 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXX, BGP Model for Service Provider Network."; | "RFC XXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| grouping bgp-peer-group-afi-safi-list { | grouping bgp-peer-group-afi-safi-list { | |||
| description | description | |||
| "List of address-families associated with the BGP peer-group"; | "List of address-families associated with the BGP peer-group"; | |||
| list afi-safi { | list afi-safi { | |||
| skipping to change at page 60, line 29 ¶ | skipping to change at page 60, line 29 ¶ | |||
| key "peer-group-name"; | key "peer-group-name"; | |||
| description | description | |||
| "List of BGP peer-groups configured on the local system - | "List of BGP peer-groups configured on the local system - | |||
| uniquely identified by peer-group name"; | uniquely identified by peer-group name"; | |||
| uses bgp-peer-group-base; | uses bgp-peer-group-base; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-neighbor@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-neighbor@2020-06-28.yang" | |||
| submodule ietf-bgp-neighbor { | submodule ietf-bgp-neighbor { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix bgp; | prefix bgp; | |||
| } | } | |||
| import ietf-bgp-types { | import ietf-bgp-types { | |||
| prefix bt; | prefix bt; | |||
| reference | reference | |||
| "RFC XXXX, BGP Model for Service Provider Network."; | "RFC XXXX, BGP Model for Service Provider Network."; | |||
| skipping to change at page 61, line 38 ¶ | skipping to change at page 61, line 38 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXX, BGP Model for Service Provider Network."; | "RFC XXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| grouping bgp-neighbor-use-multiple-paths { | grouping bgp-neighbor-use-multiple-paths { | |||
| description | description | |||
| "Multi-path configuration and state applicable to a BGP | "Multi-path configuration and state applicable to a BGP | |||
| neighbor"; | neighbor"; | |||
| skipping to change at page 64, line 42 ¶ | skipping to change at page 64, line 42 ¶ | |||
| } | } | |||
| uses mp-all-afi-safi-list-contents; | uses mp-all-afi-safi-list-contents; | |||
| uses bgp-neighbor-use-multiple-paths; | uses bgp-neighbor-use-multiple-paths; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 7.2. BGP types | 7.2. BGP types | |||
| <CODE BEGINS> file "ietf-bgp-types@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-types@2020-06-28.yang" | |||
| module ietf-bgp-types { | module ietf-bgp-types { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-types"; | |||
| prefix bt; | prefix bt; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| // meta | // meta | |||
| skipping to change at page 65, line 21 ¶ | skipping to change at page 65, line 21 ¶ | |||
| Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | |||
| Keyur Patel (keyur at arrcus.com), | Keyur Patel (keyur at arrcus.com), | |||
| Susan Hares (shares at ndzh.com), | Susan Hares (shares at ndzh.com), | |||
| Jeffrey Haas (jhaas at pfrc.org)."; | Jeffrey Haas (jhaas at pfrc.org)."; | |||
| description | description | |||
| "This module contains general data definitions for use in BGP | "This module contains general data definitions for use in BGP | |||
| policy. It can be imported by modules that make use of BGP | policy. It can be imported by modules that make use of BGP | |||
| attributes"; | attributes"; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXX, BGP Model for Service Provider Network."; | "RFC XXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| /* | /* | |||
| * Features. | * Features. | |||
| */ | */ | |||
| skipping to change at page 72, line 20 ¶ | skipping to change at page 72, line 20 ¶ | |||
| base bgp-well-known-std-community; | base bgp-well-known-std-community; | |||
| } | } | |||
| description | description | |||
| "Type definition for well-known IETF community attribute | "Type definition for well-known IETF community attribute | |||
| values"; | values"; | |||
| reference | reference | |||
| "IANA Border Gateway Protocol (BGP) Well Known Communities"; | "IANA Border Gateway Protocol (BGP) Well Known Communities"; | |||
| } | } | |||
| typedef bgp-std-community-type { | typedef bgp-std-community-type { | |||
| // TODO: further refine restrictions and allowed patterns | ||||
| // 4-octet value: | ||||
| // <as number> 2 octets | ||||
| // <community value> 2 octets | ||||
| type union { | type union { | |||
| type uint32 { | type uint32 { | |||
| // per RFC 1997, 0x00000000 - 0x0000FFFF and 0xFFFF0000 - | ||||
| // 0xFFFFFFFF are reserved | ||||
| range "65536..4294901759"; | range "65536..4294901759"; | |||
| // 0x00010000..0xFFFEFFFF | ||||
| } | } | |||
| type string { | type string { | |||
| pattern '([0-9]+:[0-9]+)'; | pattern '([0-9]+:[0-9]+)'; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Type definition for standard community attributes"; | "Type definition for standard community attributes"; | |||
| reference | reference | |||
| "RFC 1997 - BGP Communities Attribute"; | "RFC 1997 - BGP Communities Attribute"; | |||
| } | } | |||
| typedef bgp-ext-community-type { | typedef bgp-ext-community-type { | |||
| // TODO: needs more work to make this more precise given the | ||||
| // variability of extended community attribute specifications | ||||
| // 8-octet value: | ||||
| // <type> 2 octects | ||||
| // <value> 6 octets | ||||
| type union { | type union { | |||
| type string { | type string { | |||
| // Type 1: 2-octet global and 4-octet local | // Type 1: 2-octet global and 4-octet local | |||
| // (AS number) (Integer) | // (AS number) (Integer) | |||
| pattern '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|' | pattern '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|' | |||
| + '[1-9][0-9]{1,4}|[0-9]):' | + '[1-9][0-9]{1,4}|[0-9]):' | |||
| + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' | + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|' | |||
| + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])'; | + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])'; | |||
| } | } | |||
| type string { | type string { | |||
| skipping to change at page 74, line 11 ¶ | skipping to change at page 73, line 48 ¶ | |||
| + '[1-9][0-9]{1,4}|[0-9])'; | + '[1-9][0-9]{1,4}|[0-9])'; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Type definition for extended community attributes"; | "Type definition for extended community attributes"; | |||
| reference | reference | |||
| "RFC 4360 - BGP Extended Communities Attribute"; | "RFC 4360 - BGP Extended Communities Attribute"; | |||
| } | } | |||
| typedef bgp-community-regexp-type { | typedef bgp-community-regexp-type { | |||
| // TODO: needs more work to decide what format these regexps can | ||||
| // take. | ||||
| type string; | type string; | |||
| description | description | |||
| "Type definition for communities specified as regular | "Type definition for communities specified as regular | |||
| expression patterns"; | expression patterns"; | |||
| } | } | |||
| typedef bgp-origin-attr-type { | typedef bgp-origin-attr-type { | |||
| type enumeration { | type enumeration { | |||
| enum igp { | enum igp { | |||
| description | description | |||
| "Origin of the NLRI is internal"; | "Origin of the NLRI is internal"; | |||
| } | } | |||
| enum egp { | enum egp { | |||
| description | description | |||
| "Origin of the NLRI is EGP"; | "Origin of the NLRI is EGP"; | |||
| } | } | |||
| skipping to change at page 77, line 7 ¶ | skipping to change at page 76, line 34 ¶ | |||
| description | description | |||
| "Type describing variations of community attributes. | "Type describing variations of community attributes. | |||
| The community types can be combined and a value of 0 | The community types can be combined and a value of 0 | |||
| implies 'none'"; | implies 'none'"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 7.3. BGP policy data | 7.3. BGP policy data | |||
| <CODE BEGINS> file "ietf-bgp-policy@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-policy@2020-06-28.yang" | |||
| module ietf-bgp-policy { | module ietf-bgp-policy { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-policy"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-policy"; | |||
| prefix bp; | prefix bp; | |||
| // import some basic types | // import some basic types | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| skipping to change at page 77, line 43 ¶ | skipping to change at page 77, line 23 ¶ | |||
| Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | |||
| Keyur Patel (keyur at arrcus.com), | Keyur Patel (keyur at arrcus.com), | |||
| Susan Hares (shares at ndzh.com), | Susan Hares (shares at ndzh.com), | |||
| Jeffrey Haas (jhaas at pfrc.org)."; | Jeffrey Haas (jhaas at pfrc.org)."; | |||
| description | description | |||
| "This module contains data definitions for BGP routing policy. | "This module contains data definitions for BGP routing policy. | |||
| It augments the base routing-policy module with BGP-specific | It augments the base routing-policy module with BGP-specific | |||
| options for conditions and actions."; | options for conditions and actions."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXX, BGP Model for Service Provider Network."; | "RFC XXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| // typedef statements | // typedef statements | |||
| typedef bgp-set-community-option-type { | typedef bgp-set-community-option-type { | |||
| type enumeration { | type enumeration { | |||
| skipping to change at page 82, line 4 ¶ | skipping to change at page 81, line 32 ¶ | |||
| communities for the set-ext-community action"; | communities for the set-ext-community action"; | |||
| } | } | |||
| leaf options { | leaf options { | |||
| type bgp-set-community-option-type; | type bgp-set-community-option-type; | |||
| description | description | |||
| "Options for modifying the community attribute with | "Options for modifying the community attribute with | |||
| the specified values. These options apply to both | the specified values. These options apply to both | |||
| methods of setting the community attribute."; | methods of setting the community attribute."; | |||
| } | } | |||
| } | } | |||
| augment "/rpol:routing-policy/rpol:policy-definitions/" | ||||
| + "rpol:policy-definition/rpol:statements/rpol:statement/" | augment "/rpol:routing-policy/rpol:policy-definitions/" + | |||
| + "rpol:conditions" { | "rpol:policy-definition/rpol:policy-statements/" + | |||
| "rpol:statement/rpol:conditions" { | ||||
| description | description | |||
| "BGP policy conditions added to routing policy module"; | "BGP policy conditions added to routing policy module"; | |||
| container bgp-conditions { | container bgp-conditions { | |||
| description | description | |||
| "Top-level container for BGP specific policy conditions "; | "Top-level container for BGP specific policy conditions "; | |||
| leaf med-eq { | leaf med-eq { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Condition to check if the received MED value is equal to | "Condition to check if the received MED value is equal to | |||
| the specified value"; | the specified value"; | |||
| skipping to change at page 82, line 23 ¶ | skipping to change at page 82, line 4 ¶ | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Condition to check if the received MED value is equal to | "Condition to check if the received MED value is equal to | |||
| the specified value"; | the specified value"; | |||
| } | } | |||
| leaf origin-eq { | leaf origin-eq { | |||
| type bt:bgp-origin-attr-type; | type bt:bgp-origin-attr-type; | |||
| description | description | |||
| "Condition to check if the route origin is equal to the | "Condition to check if the route origin is equal to the | |||
| specified value"; | specified value"; | |||
| } | } | |||
| leaf-list next-hop-in { | leaf-list next-hop-in { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "List of next hop addresses to check for in the route | "List of next hop addresses to check for in the route | |||
| update"; | update"; | |||
| } | } | |||
| leaf-list afi-safi-in { | leaf-list afi-safi-in { | |||
| type identityref { | type identityref { | |||
| base bt:afi-safi-type; | base bt:afi-safi-type; | |||
| } | } | |||
| description | description | |||
| "List of address families which the NLRI may be within"; | "List of address families which the NLRI may be within"; | |||
| } | } | |||
| leaf local-pref-eq { | leaf local-pref-eq { | |||
| type uint32; | type uint32; | |||
| // TODO: add support for other comparisons if needed | ||||
| description | description | |||
| "Condition to check if the local pref attribute is equal to | "Condition to check if the local pref attribute is equal to | |||
| the specified value"; | the specified value"; | |||
| } | } | |||
| leaf route-type { | leaf route-type { | |||
| // TODO: verify extent of vendor support for this comparison | ||||
| type enumeration { | type enumeration { | |||
| enum internal { | enum internal { | |||
| description | description | |||
| "route type is internal"; | "route type is internal"; | |||
| } | } | |||
| enum external { | enum external { | |||
| description | description | |||
| "route type is external"; | "route type is external"; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 84, line 25 ¶ | skipping to change at page 84, line 4 ¶ | |||
| path "/rpol:routing-policy/rpol:defined-sets/" | path "/rpol:routing-policy/rpol:defined-sets/" | |||
| + "bp:bgp-defined-sets/bp:as-path-sets/" | + "bp:bgp-defined-sets/bp:as-path-sets/" | |||
| + "bp:as-path-set/bp:name"; | + "bp:as-path-set/bp:name"; | |||
| } | } | |||
| description | description | |||
| "References a defined AS path set"; | "References a defined AS path set"; | |||
| } | } | |||
| uses rpol:match-set-options-group; | uses rpol:match-set-options-group; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rpol:routing-policy/rpol:policy-definitions/" | augment "/rpol:routing-policy/rpol:policy-definitions/" + | |||
| + "rpol:policy-definition/rpol:statements/rpol:statement/" | "rpol:policy-definition/rpol:policy-statements/" + | |||
| + "rpol:actions" { | "rpol:statement/rpol:actions" { | |||
| description | description | |||
| "BGP policy actions added to routing policy module."; | "BGP policy actions added to routing policy module."; | |||
| container bgp-actions { | container bgp-actions { | |||
| description | description | |||
| "Top-level container for BGP-specific actions"; | "Top-level container for BGP-specific actions"; | |||
| leaf set-route-origin { | leaf set-route-origin { | |||
| type bt:bgp-origin-attr-type; | type bt:bgp-origin-attr-type; | |||
| description | description | |||
| "Set the origin attribute to the specified value"; | "Set the origin attribute to the specified value"; | |||
| } | } | |||
| skipping to change at page 87, line 16 ¶ | skipping to change at page 86, line 43 ¶ | |||
| + "bp:bgp-defined-sets/bp:ext-community-sets/" | + "bp:bgp-defined-sets/bp:ext-community-sets/" | |||
| + "bp:ext-community-set/bp:name"; | + "bp:ext-community-set/bp:name"; | |||
| } | } | |||
| description | description | |||
| "References a defined extended community set by name"; | "References a defined extended community set by name"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| // rpc statements | ||||
| // notification statements | ||||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 7.4. RIB modules | 7.4. RIB modules | |||
| <CODE BEGINS> file "ietf-bgp-rib@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-rib@2020-06-28.yang" | |||
| submodule ietf-bgp-rib { | submodule ietf-bgp-rib { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix br; | prefix br; | |||
| } | } | |||
| /* | /* | |||
| * Import and Include | * Import and Include | |||
| */ | */ | |||
| import ietf-bgp-types { | import ietf-bgp-types { | |||
| prefix bt; | prefix bt; | |||
| reference | reference | |||
| "RFC XXXX: BGP YANG Model for Service Provider Networks."; | "RFC XXXX: BGP YANG Model for Service Provider Networks."; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Types."; | "RFC 6991: Common YANG Types."; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Types."; | "RFC 6991: Common YANG Types."; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix rt; | prefix rt; | |||
| reference | reference | |||
| "RFC 8294: Routing Area YANG Types."; | "RFC 8294: Routing Area YANG Types."; | |||
| } | } | |||
| include ietf-bgp-rib-types; | include ietf-bgp-rib-types; | |||
| include ietf-bgp-rib-tables; | include ietf-bgp-rib-tables; | |||
| // groupings of attributes in three categories: | // groupings of attributes in three categories: | |||
| // - shared across multiple routes | // - shared across multiple routes | |||
| // - common to LOC-RIB and Adj-RIB, but not shared across routes | // - common to LOC-RIB and Adj-RIB, but not shared across routes | |||
| // - specific to LOC-RIB or Adj-RIB | // - specific to LOC-RIB or Adj-RIB | |||
| include ietf-bgp-rib-attributes; | include ietf-bgp-rib-attributes; | |||
| // groupings of annotations for each route or table | // groupings of annotations for each route or table | |||
| include ietf-bgp-rib-table-attributes; | include ietf-bgp-rib-table-attributes; | |||
| organization | organization | |||
| "IETF IDR Working Group"; | "IETF IDR Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/idr> | "WG Web: <http://tools.ietf.org/wg/idr> | |||
| WG List: <idr@ietf.org> | WG List: <idr@ietf.org> | |||
| Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | Authors: Mahesh Jethanandani (mjethanandani at gmail.com), | |||
| Keyur Patel (keyur at arrcus.com), | Keyur Patel (keyur at arrcus.com), | |||
| Susan Hares (shares at ndzh.com)"; | Susan Hares (shares at ndzh.com)"; | |||
| description | description | |||
| "Defines a submodule for representing BGP routing table (RIB) | "Defines a submodule for representing BGP routing table (RIB) | |||
| contents. The submodule supports 5 logical RIBs per address | contents. The submodule supports 5 logical RIBs per address | |||
| family: | family: | |||
| loc-rib: This is the main BGP routing table for the local routing | loc-rib: This is the main BGP routing table for the local routing | |||
| instance, containing best-path selections for each prefix. The | instance, containing best-path selections for each prefix. The | |||
| loc-rib table may contain multiple routes for a given prefix, | loc-rib table may contain multiple routes for a given prefix, | |||
| with an attribute to indicate which was selected as the best | with an attribute to indicate which was selected as the best | |||
| path. Note that multiple paths may be used or advertised even if | path. Note that multiple paths may be used or advertised even if | |||
| only one path is marked as best, e.g., when using BGP | only one path is marked as best, e.g., when using BGP | |||
| add-paths. An implementation may choose to mark multiple | add-paths. An implementation may choose to mark multiple | |||
| paths in the RIB as best path by setting the flag to true for | paths in the RIB as best path by setting the flag to true for | |||
| multiple entries. | multiple entries. | |||
| adj-rib-in-pre: This is a per-neighbor table containing the NLRI | adj-rib-in-pre: This is a per-neighbor table containing the NLRI | |||
| updates received from the neighbor before any local input policy | updates received from the neighbor before any local input policy | |||
| rules or filters have been applied. This can be considered the | rules or filters have been applied. This can be considered the | |||
| 'raw' updates from a given neighbor. | 'raw' updates from a given neighbor. | |||
| adj-rib-in-post: This is a per-neighbor table containing the | adj-rib-in-post: This is a per-neighbor table containing the | |||
| routes received from the neighbor that are eligible for | routes received from the neighbor that are eligible for | |||
| best-path selection after local input policy rules have been | best-path selection after local input policy rules have been | |||
| applied. | applied. | |||
| adj-rib-out-pre: This is a per-neighbor table containing routes | adj-rib-out-pre: This is a per-neighbor table containing routes | |||
| eligible for sending (advertising) to the neighbor before output | eligible for sending (advertising) to the neighbor before output | |||
| policy rules have been applied. | policy rules have been applied. | |||
| adj-rib-out-post: This is a per-neighbor table containing routes | adj-rib-out-post: This is a per-neighbor table containing routes | |||
| eligible for sending (advertising) to the neighbor after output | eligible for sending (advertising) to the neighbor after output | |||
| policy rules have been applied. | policy rules have been applied. | |||
| Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2019 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXXX, BGP YANG Model for Service Provider Network."; | "RFC XXXX, BGP YANG Model for Service Provider Network."; | |||
| } | } | |||
| grouping rib { | grouping attr-set-attributes { | |||
| description | description | |||
| "Grouping for rib."; | "A grouping for all attribute set parameters."; | |||
| container rib { | ||||
| config false; | container attr-set-attributes { | |||
| container attr-sets { | ||||
| description | description | |||
| "Enclosing container for the list of path attribute sets"; | "A container for attribute set parameters."; | |||
| list attr-set { | ||||
| key "index"; | leaf origin { | |||
| type bt:bgp-origin-attr-type; | ||||
| description | description | |||
| "List of path attributes that may be in use by multiple | "BGP attribute defining the origin of the path | |||
| routes in the table"; | information."; | |||
| leaf index { | } | |||
| type uint64; | leaf atomic-aggregate { | |||
| description | type boolean; | |||
| "System generated index for each attribute set. The | description | |||
| index is used to reference an attribute set from a | "BGP attribute indicating that the prefix is an atomic | |||
| specific path. Multiple paths may reference the same | aggregate; i.e., the peer selected a less specific | |||
| attribute set."; | route without selecting a more specific route that is | |||
| } | included in it."; | |||
| leaf origin { | reference | |||
| type bt:bgp-origin-attr-type; | "RFC 4271: Section 5.1.6."; | |||
| description | } | |||
| "BGP attribute defining the origin of the path | leaf next-hop { | |||
| information."; | type inet:ip-address; | |||
| } | description | |||
| leaf atomic-aggregate { | "BGP next hop attribute defining the IP address of the | |||
| type boolean; | router that should be used as the next hop to the | |||
| description | destination"; | |||
| "BGP attribute indicating that the prefix is an atomic | reference | |||
| aggregate; i.e., the peer selected a less specific | "RFC 4271: Section 5.1.3."; | |||
| route without selecting a more specific route that is | } | |||
| included in it."; | leaf med { | |||
| reference | type uint32; | |||
| "RFC 4271: Section 5.1.6."; | description | |||
| } | "BGP multi-exit discriminator attribute used in BGP route | |||
| leaf next-hop { | selection process"; | |||
| type inet:ip-address; | reference | |||
| description | "RFC 4271: Section 5.1.4."; | |||
| "BGP next hop attribute defining the IP address of the | } | |||
| router that should be used as the next hop to the | leaf local-pref { | |||
| destination"; | type uint32; | |||
| reference | description | |||
| "RFC 4271: Section 5.1.3."; | "BGP local preference attribute sent to internal peers to | |||
| } | indicate the degree of preference for externally learned | |||
| leaf med { | routes. The route with the highest local preference | |||
| type uint32; | value is preferred."; | |||
| description | reference | |||
| "BGP multi-exit discriminator attribute used in BGP route | "RFC 4271: Section 5.1.5."; | |||
| selection process"; | } | |||
| reference | leaf originator-id { | |||
| "RFC 4271: Section 5.1.4."; | type yang:dotted-quad; | |||
| } | description | |||
| leaf local-pref { | "BGP attribute that provides the id as an IPv4 address | |||
| type uint32; | of the originator of the announcement."; | |||
| description | reference | |||
| "BGP local preference attribute sent to internal peers to | "RFC 4456 - BGP Route Reflection: An Alternative to Full | |||
| indicate the degree of preference for externally learned | Mesh Internal BGP (IBGP)"; | |||
| routes. The route with the highest local preference | } | |||
| value is preferred."; | leaf-list cluster-list { | |||
| reference | type yang:dotted-quad; | |||
| "RFC 4271: Section 5.1.5."; | description | |||
| } | "Represents the reflection path that the route has | |||
| leaf originator-id { | passed."; | |||
| type yang:dotted-quad; | reference | |||
| description | "RFC 4456 - BGP Route Reflection: An Alternative to Full | |||
| "BGP attribute that provides the id as an IPv4 address | Mesh Internal BGP (IBGP)"; | |||
| of the originator of the announcement."; | } | |||
| reference | leaf aigp-metric { | |||
| "RFC 4456 - BGP Route Reflection: An Alternative to Full | type uint64; | |||
| Mesh Internal BGP (IBGP)"; | description | |||
| } | "BGP path attribute representing the accumulated IGP | |||
| leaf-list cluster-list { | metric for the path"; | |||
| type yang:dotted-quad; | reference | |||
| "RFC 7311 - The Accumulated IGP Metric Attribute for BGP"; | ||||
| } | ||||
| container aggregator { | ||||
| config false; | ||||
| description | ||||
| "BGP attribute indicating the prefix has been | ||||
| aggregated by the specified AS and router."; | ||||
| reference | ||||
| "RFC 4271: Section 5.1.7."; | ||||
| leaf as { | ||||
| type inet:as-number; | ||||
| description | description | |||
| "Represents the reflection path that the route has | "AS number of the autonomous system that performed the | |||
| passed."; | aggregation."; | |||
| reference | ||||
| "RFC 4456 - BGP Route Reflection: An Alternative to Full | ||||
| Mesh Internal BGP (IBGP)"; | ||||
| } | } | |||
| leaf aigp-metric { | leaf as4 { | |||
| type uint64; | type inet:as-number; | |||
| description | description | |||
| "BGP path attribute representing the accumulated IGP | "AS number of the autonomous system that performed the | |||
| metric for the path"; | aggregation (4-octet representation). This value is | |||
| populated if an upstream router is not 4-octet capable. | ||||
| Its semantics are similar to the AS4_PATH optional | ||||
| transitive attribute"; | ||||
| reference | reference | |||
| "RFC 7311 - The Accumulated IGP Metric Attribute for BGP"; | "RFC 6793 - BGP Support for Four-octet AS Number Space"; | |||
| } | } | |||
| container aggregator { | leaf address { | |||
| config false; | type inet:ipv4-address; | |||
| description | description | |||
| "BGP attribute indicating the prefix has been | "IP address of the router that performed the | |||
| aggregated by the specified AS and router."; | ||||
| reference | ||||
| "RFC 4271: Section 5.1.7."; | ||||
| leaf as { | ||||
| type inet:as-number; | ||||
| description | ||||
| "AS number of the autonomous system that performed the | ||||
| aggregation."; | ||||
| } | ||||
| leaf as4 { | ||||
| type inet:as-number; | ||||
| description | ||||
| "AS number of the autonomous system that performed the | ||||
| aggregation (4-octet representation). This value is | ||||
| populated if an upstream router is not 4-octet capable. | ||||
| Its semantics are similar to the AS4_PATH optional | ||||
| transitive attribute"; | ||||
| reference | ||||
| "RFC 6793 - BGP Support for Four-octet AS Number Space"; | ||||
| } | ||||
| leaf address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IP address of the router that performed the | ||||
| aggregation."; | aggregation."; | |||
| } | ||||
| } | } | |||
| container as-path { | } | |||
| description | container as-path { | |||
| "Enclosing container for the list of AS path segments. | description | |||
| "Enclosing container for the list of AS path segments. | ||||
| In the Adj-RIB-In or Adj-RIB-Out, this list should show | In the Adj-RIB-In or Adj-RIB-Out, this list should show | |||
| the received or sent AS_PATH, respectively. For | the received or sent AS_PATH, respectively. For | |||
| example, if the local router is not 4-byte capable, this | example, if the local router is not 4-byte capable, this | |||
| value should consist of 2-octet ASNs or the AS_TRANS | value should consist of 2-octet ASNs or the AS_TRANS | |||
| (AS 23456) values received or sent in route updates. | (AS 23456) values received or sent in route updates. | |||
| In the Loc-RIB, this list should reflect the effective | ||||
| AS path for the route, e.g., a 4-octet value if the | ||||
| local router is 4-octet capable."; | ||||
| reference | ||||
| "RFC 4271 - A Border Gateway Protocol 4 (BGP-4) | ||||
| RFC 6793 - BGP Support for Four-octet AS Number Space | ||||
| RFC 5065 - Autonomous System Confederations for BGP"; | ||||
| list segment { | ||||
| key "index"; | ||||
| config false; | ||||
| uses bgp-as-path-attr; | ||||
| description | ||||
| "List of AS PATH segments"; | ||||
| In the Loc-RIB, this list should reflect the effective | ||||
| AS path for the route, e.g., a 4-octet value if the | ||||
| local router is 4-octet capable."; | ||||
| reference | ||||
| "RFC 4271 - A Border Gateway Protocol 4 (BGP-4) | ||||
| RFC 6793 - BGP Support for Four-octet AS Number Space | ||||
| RFC 5065 - Autonomous System Confederations for BGP"; | ||||
| list segment { | ||||
| key "type"; | ||||
| config false; | ||||
| uses bgp-as-path-attr; | ||||
| description | ||||
| "List of AS PATH segments"; | ||||
| } | ||||
| } | } | |||
| container as4-path { | } | |||
| container as4-path { | ||||
| description | ||||
| "This is the path encoded with 4-octet | ||||
| AS numbers in the optional transitive AS4_PATH attribute. | ||||
| This value is populated with the received or sent | ||||
| attribute in Adj-RIB-In or Adj-RIB-Out, respectively. | ||||
| It should not be populated in Loc-RIB since the Loc-RIB | ||||
| is expected to store the effective AS-Path in the | ||||
| as-path leaf regardless of being 4-octet or 2-octet."; | ||||
| reference | ||||
| "RFC 6793 - BGP Support for Four-octet AS Number Space"; | ||||
| list segment { | ||||
| key "index"; | ||||
| config false; | ||||
| uses bgp-as-path-attr; | ||||
| description | description | |||
| "This is the path encoded with 4-octet | "List of AS PATH segments"; | |||
| AS numbers in the optional transitive AS4_PATH attribute. | ||||
| This value is populated with the received or sent | ||||
| attribute in Adj-RIB-In or Adj-RIB-Out, respectively. | ||||
| It should not be populated in Loc-RIB since the Loc-RIB | ||||
| is expected to store the effective AS-Path in the | ||||
| as-path leaf regardless of being 4-octet or 2-octet."; | ||||
| reference | ||||
| "RFC 6793 - BGP Support for Four-octet AS Number Space"; | ||||
| list segment { | ||||
| key "type"; | ||||
| config false; | ||||
| uses bgp-as-path-attr; | ||||
| description | ||||
| "List of AS PATH segments"; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| container communities { | } | |||
| grouping attr-set { | ||||
| description | ||||
| "A grouping for all path attributes."; | ||||
| list attr-set { | ||||
| key "index"; | ||||
| description | description | |||
| "Enclosing container for the list of community attribute | "List of path attributes that may be in use by multiple | |||
| sets"; | routes in the table"; | |||
| list community { | leaf index { | |||
| key "index"; | type uint64; | |||
| config false; | ||||
| description | description | |||
| "List of path attributes that may be in use by multiple | "System generated index for each attribute set. The | |||
| routes in the table"; | index is used to reference an attribute set from a | |||
| leaf index { | specific path. Multiple paths may reference the same | |||
| type uint64; | attribute set."; | |||
| description | ||||
| "System generated index for each attribute set. The | ||||
| index is used to reference an attribute set from a | ||||
| specific path. Multiple paths may reference the same | ||||
| attribute set."; | ||||
| } | ||||
| uses bgp-community-attr-state; | ||||
| } | } | |||
| uses attr-set-attributes; | ||||
| } | } | |||
| container ext-communities { | } | |||
| grouping attr-sets { | ||||
| description | ||||
| "A grouping for all sets of path attributes."; | ||||
| container attr-sets { | ||||
| description | description | |||
| "Enclosing container for the list of extended community | "Enclosing container for the list of path attribute sets"; | |||
| attribute sets"; | uses attr-set; | |||
| list ext-community { | } | |||
| key "index"; | } | |||
| config false; | ||||
| grouping ext-community-attributes { | ||||
| description | ||||
| "A grouping for all external community parameters."; | ||||
| leaf-list ext-community { | ||||
| type rt:route-target; | ||||
| description | ||||
| "List of BGP extended community attributes. The received | ||||
| extended community may be an explicitly modeled | ||||
| type or unknown, represented by an 8-octet value | ||||
| formatted according to RFC 4360."; | ||||
| reference | ||||
| "RFC 4360 - BGP Extended Communities Attribute"; | ||||
| } | ||||
| } | ||||
| grouping rib { | ||||
| description | ||||
| "Grouping for rib."; | ||||
| container rib { | ||||
| config false; | ||||
| uses attr-sets; | ||||
| container communities { | ||||
| description | description | |||
| "List of path attributes that may be in use by multiple | "Enclosing container for the list of community attribute | |||
| routes in the table"; | sets"; | |||
| leaf index { | list community { | |||
| type uint64; | key "index"; | |||
| config false; | ||||
| description | description | |||
| "System generated index for each attribute set. The | "List of path attributes that may be in use by multiple | |||
| index is used to reference an attribute set from a | routes in the table"; | |||
| specific path. Multiple paths may reference the same | leaf index { | |||
| attribute set."; | type uint64; | |||
| description | ||||
| "System generated index for each attribute set. The | ||||
| index is used to reference an attribute set from a | ||||
| specific path. Multiple paths may reference the same | ||||
| attribute set."; | ||||
| } | ||||
| uses bgp-community-attr-state; | ||||
| } | } | |||
| leaf-list ext-community { | } | |||
| type rt:route-target; | container ext-communities { | |||
| description | ||||
| "Enclosing container for the list of extended community | ||||
| attribute sets"; | ||||
| list ext-community { | ||||
| key "index"; | ||||
| config false; | ||||
| description | description | |||
| "List of BGP extended community attributes. The received | "List of path attributes that may be in use by multiple | |||
| extended community may be an explicitly modeled | routes in the table"; | |||
| type or unknown, represented by an 8-octet value | leaf index { | |||
| formatted according to RFC 4360."; | type uint64; | |||
| reference | description | |||
| "RFC 4360 - BGP Extended Communities Attribute"; | "System generated index for each attribute set. The | |||
| index is used to reference an attribute set from a | ||||
| specific path. Multiple paths may reference the same | ||||
| attribute set."; | ||||
| } | ||||
| uses ext-community-attributes; | ||||
| } | } | |||
| } | } | |||
| } | ||||
| container afi-safis { | container afi-safis { | |||
| config false; | config false; | |||
| description | ||||
| "Enclosing container for address family list"; | ||||
| list afi-safi { | ||||
| key "afi-safi-name"; | ||||
| description | description | |||
| "List of afi-safi types."; | "Enclosing container for address family list"; | |||
| leaf afi-safi-name { | list afi-safi { | |||
| type identityref { | key "afi-safi-name"; | |||
| base bt:afi-safi-type; | ||||
| } | ||||
| description | description | |||
| "AFI,SAFI name."; | "List of afi-safi types."; | |||
| } | leaf afi-safi-name { | |||
| container ipv4-unicast { | type identityref { | |||
| when "../afi-safi-name = 'bt:ipv4-unicast'" { | base bt:afi-safi-type; | |||
| } | ||||
| description | description | |||
| "Include this container for IPv4 unicast RIB"; | "AFI,SAFI name."; | |||
| } | } | |||
| description | container ipv4-unicast { | |||
| "Routing tables for IPv4 unicast -- active when the | when "../afi-safi-name = 'bt:ipv4-unicast'" { | |||
| afi-safi name is ipv4-unicast"; | description | |||
| uses ipv4-loc-rib; | "Include this container for IPv4 unicast RIB"; | |||
| uses ipv4-adj-rib; | } | |||
| } | ||||
| container ipv6-unicast { | ||||
| when "../afi-safi-name = 'bt:ipv6-unicast'" { | ||||
| description | description | |||
| "Include this container for IPv6 unicast RIB"; | "Routing tables for IPv4 unicast -- active when the | |||
| afi-safi name is ipv4-unicast"; | ||||
| uses ipv4-loc-rib; | ||||
| uses ipv4-adj-rib; | ||||
| } | ||||
| container ipv6-unicast { | ||||
| when "../afi-safi-name = 'bt:ipv6-unicast'" { | ||||
| description | ||||
| "Include this container for IPv6 unicast RIB"; | ||||
| } | ||||
| description | ||||
| "Routing tables for IPv6 unicast -- active when the | ||||
| afi-safi name is ipv6-unicast"; | ||||
| uses ipv6-loc-rib; | ||||
| uses ipv6-adj-rib; | ||||
| } | } | |||
| description | ||||
| "Routing tables for IPv6 unicast -- active when the | ||||
| afi-safi name is ipv6-unicast"; | ||||
| uses ipv6-loc-rib; | ||||
| uses ipv6-adj-rib; | ||||
| } | } | |||
| } | } | |||
| description | ||||
| "Top level container for BGP RIB"; | ||||
| } | } | |||
| description | ||||
| "Top level container for BGP RIB"; | ||||
| } | } | |||
| } | } | |||
| } | <CODE ENDS> | |||
| <CODE ENDS> | ||||
| <CODE BEGINS> file "ietf-bgp-rib-ext@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-rib-ext@2020-06-28.yang" | |||
| submodule ietf-bgp-rib-ext { | submodule ietf-bgp-rib-ext { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix bre; | prefix bre; | |||
| } | } | |||
| include ietf-bgp-rib-types; | include ietf-bgp-rib-types; | |||
| organization | organization | |||
| "IETF IDR Working Group"; | "IETF IDR Working Group"; | |||
| skipping to change at page 96, line 16 ¶ | skipping to change at page 96, line 25 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Revision."; | "Initial Revision."; | |||
| reference | reference | |||
| "RFC XXXX: BGP YANG Model for Service Providers."; | "RFC XXXX: BGP YANG Model for Service Providers."; | |||
| } | } | |||
| grouping rib-ext-route-annotations { | grouping rib-ext-route-annotations { | |||
| description | description | |||
| "Extended annotations for routes in the routing tables"; | "Extended annotations for routes in the routing tables"; | |||
| leaf reject-reason { | leaf reject-reason { | |||
| skipping to change at page 96, line 42 ¶ | skipping to change at page 97, line 4 ¶ | |||
| base bgp-not-selected-policy; | base bgp-not-selected-policy; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Indicates the reason the route is not used, either due to | "Indicates the reason the route is not used, either due to | |||
| policy filtering or bestpath selection"; | policy filtering or bestpath selection"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-rib-types@2020-06-28.yang" | ||||
| <CODE BEGINS> file "ietf-bgp-rib-types@2020-02-24.yang" | ||||
| submodule ietf-bgp-rib-types { | submodule ietf-bgp-rib-types { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix br; | prefix br; | |||
| } | } | |||
| organization | organization | |||
| "IETF IDR Working Group"; | "IETF IDR Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/idr> | "WG Web: <http://tools.ietf.org/wg/idr> | |||
| skipping to change at page 97, line 37 ¶ | skipping to change at page 97, line 45 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXXX, BGP Model for Service Provider Network."; | "RFC XXXX, BGP Model for Service Provider Network."; | |||
| } | } | |||
| identity invalid-route-reason { | identity invalid-route-reason { | |||
| description | description | |||
| "Base identity for reason code for routes that are rejected as | "Base identity for reason code for routes that are rejected as | |||
| invalid. Some derived entities are based on BMP v3"; | invalid. Some derived entities are based on BMP v3"; | |||
| reference | reference | |||
| "RFC 7854: BGP Monitoring Protocol."; | "RFC 7854: BGP Monitoring Protocol."; | |||
| } | } | |||
| identity invalid-cluster-loop { | identity invalid-cluster-loop { | |||
| base invalid-route-reason; | base invalid-route-reason; | |||
| description | description | |||
| "Route was invalid due to CLUSTER_LIST loop"; | "Route was invalid due to CLUSTER_LIST loop"; | |||
| } | } | |||
| identity invalid-as-loop { | identity invalid-as-loop { | |||
| base invalid-route-reason; | base invalid-route-reason; | |||
| description | description | |||
| "Route was invalid due to AS_PATH loop"; | "Route was invalid due to AS_PATH loop"; | |||
| skipping to change at page 100, line 23 ¶ | skipping to change at page 100, line 31 ¶ | |||
| } | } | |||
| identity rejected-import-policy { | identity rejected-import-policy { | |||
| base bgp-not-selected-policy; | base bgp-not-selected-policy; | |||
| description | description | |||
| "Route was rejected after apply import policies"; | "Route was rejected after apply import policies"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-rib-attributes@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-rib-attributes@2020-06-28.yang" | |||
| submodule ietf-bgp-rib-attributes { | submodule ietf-bgp-rib-attributes { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix br; | prefix br; | |||
| } | } | |||
| // import some basic types | // import some basic types | |||
| import ietf-bgp-types { | import ietf-bgp-types { | |||
| prefix bgpt; | prefix bgpt; | |||
| skipping to change at page 101, line 29 ¶ | skipping to change at page 101, line 36 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial version"; | "Initial version"; | |||
| reference | reference | |||
| "RFC XXXX: BGP YANG Model for Service Provider Network"; | "RFC XXXX: BGP YANG Model for Service Provider Network"; | |||
| } | } | |||
| grouping bgp-as-path-attr { | grouping bgp-as-path-attr { | |||
| description | description | |||
| "Data for representing BGP AS-PATH attribute"; | "Data for representing BGP AS-PATH attribute"; | |||
| leaf index { | ||||
| type uint16; | ||||
| description | ||||
| "An index into the AS segments."; | ||||
| } | ||||
| leaf type { | leaf type { | |||
| type identityref { | type identityref { | |||
| base bgpt:as-path-segment-type; | base bgpt:as-path-segment-type; | |||
| } | } | |||
| description | description | |||
| "The type of AS-PATH segment"; | "The type of AS-PATH segment"; | |||
| } | } | |||
| leaf-list member { | leaf-list member { | |||
| type inet:as-number; | type inet:as-number; | |||
| description | description | |||
| skipping to change at page 105, line 4 ¶ | skipping to change at page 105, line 17 ¶ | |||
| if used, it should represent a locally generated path-id | if used, it should represent a locally generated path-id | |||
| value for the corresponding route. In Adj-RIB-Out, it | value for the corresponding route. In Adj-RIB-Out, it | |||
| should be the value sent to a neighbor when add-paths is | should be the value sent to a neighbor when add-paths is | |||
| used, i.e., the capability has been negotiated."; | used, i.e., the capability has been negotiated."; | |||
| reference | reference | |||
| "RFC 7911: Advertisement of Multiple Paths in BGP"; | "RFC 7911: Advertisement of Multiple Paths in BGP"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-rib-table-attributes@2020-02-24.yang" | ||||
| <CODE BEGINS> file "ietf-bgp-rib-table-attributes@2020-06-28.yang" | ||||
| submodule ietf-bgp-rib-table-attributes { | submodule ietf-bgp-rib-table-attributes { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix br; | prefix br; | |||
| } | } | |||
| // import some basic types | // import some basic types | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix types; | prefix types; | |||
| skipping to change at page 106, line 5 ¶ | skipping to change at page 106, line 20 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial version."; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: BGP YANG Model for Service Provider Network."; | "RFC XXXX: BGP YANG Model for Service Provider Network."; | |||
| } | } | |||
| grouping bgp-common-route-annotations-state { | grouping bgp-common-route-annotations-state { | |||
| description | description | |||
| "Data definitions for flags and other information attached | "Data definitions for flags and other information attached | |||
| to routes in both LOC-RIB and Adj-RIB"; | to routes in both LOC-RIB and Adj-RIB"; | |||
| skipping to change at page 107, line 26 ¶ | skipping to change at page 107, line 43 ¶ | |||
| // no enclosing container as this data will fit under an | // no enclosing container as this data will fit under an | |||
| // existing LOC-RIB container | // existing LOC-RIB container | |||
| uses bgp-common-table-attrs-state; | uses bgp-common-table-attrs-state; | |||
| description | description | |||
| "Operational state data for data related to the entire | "Operational state data for data related to the entire | |||
| LOC-RIB"; | LOC-RIB"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-rib-tables@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-rib-tables@2020-06-28.yang" | |||
| submodule ietf-bgp-rib-tables { | submodule ietf-bgp-rib-tables { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix br; | prefix br; | |||
| } | } | |||
| // import some basic types | // import some basic types | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types."; | "RFC 6991: Common YANG Data Types."; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types."; | "RFC 6991: Common YANG Data Types."; | |||
| } | } | |||
| skipping to change at page 108, line 46 ¶ | skipping to change at page 109, line 15 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference | reference | |||
| "RFC XXXX, BGP YANG Model for Service Provider Network."; | "RFC XXXX, BGP YANG Model for Service Provider Network."; | |||
| } | } | |||
| grouping bgp-adj-rib-common-attr-refs { | grouping bgp-adj-rib-common-attr-refs { | |||
| description | description | |||
| "Definitions of common references to attribute sets for | "Definitions of common references to attribute sets for | |||
| multiple AFI-SAFIs for Adj-RIB tables"; | multiple AFI-SAFIs for Adj-RIB tables"; | |||
| leaf attr-index { | leaf attr-index { | |||
| type leafref { | type leafref { | |||
| path "../../../../../../../../../attr-sets/" | path "../../../../../../../../../attr-sets/" | |||
| + "attr-set/index"; | + "attr-set/index"; | |||
| } | } | |||
| description | description | |||
| skipping to change at page 117, line 45 ¶ | skipping to change at page 118, line 13 ¶ | |||
| sending (advertising) to the neighbor after output | sending (advertising) to the neighbor after output | |||
| policy rules have been applied"; | policy rules have been applied"; | |||
| uses ipv6-adj-rib-common; | uses ipv6-adj-rib-common; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-bgp-rib-table-attributes@2020-02-24.yang" | <CODE BEGINS> file "ietf-bgp-rib-table-attributes@2020-06-28.yang" | |||
| submodule ietf-bgp-rib-table-attributes { | submodule ietf-bgp-rib-table-attributes { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| belongs-to ietf-bgp { | belongs-to ietf-bgp { | |||
| prefix br; | prefix br; | |||
| } | } | |||
| // import some basic types | // import some basic types | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix types; | prefix types; | |||
| reference | reference | |||
| "RFC 6991, Common YANG Data Types."; | "RFC 6991, Common YANG Data Types."; | |||
| } | } | |||
| include ietf-bgp-rib-types; | include ietf-bgp-rib-types; | |||
| organization | organization | |||
| skipping to change at page 118, line 46 ¶ | skipping to change at page 119, line 15 ¶ | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Initial version."; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: BGP YANG Model for Service Provider Network."; | "RFC XXXX: BGP YANG Model for Service Provider Network."; | |||
| } | } | |||
| grouping bgp-common-route-annotations-state { | grouping bgp-common-route-annotations-state { | |||
| description | description | |||
| "Data definitions for flags and other information attached | "Data definitions for flags and other information attached | |||
| to routes in both LOC-RIB and Adj-RIB"; | to routes in both LOC-RIB and Adj-RIB"; | |||
| leaf last-modified { | leaf last-modified { | |||
| type types:timeticks; | type types:timeticks; | |||
| description | description | |||
| "Timestamp when this path was last modified. | "Timestamp when this path was last modified. | |||
| The value is the timestamp in seconds relative to | The value is the timestamp in seconds relative to | |||
| skipping to change at page 120, line 45 ¶ | skipping to change at page 121, line 15 ¶ | |||
| Credit is also due to authors of the OpenConfig, whose model was | Credit is also due to authors of the OpenConfig, whose model was | |||
| relied upon to come up with this model. | relied upon to come up with this model. | |||
| Special thanks to Robert Wilton who helped convert the YANG models to | Special thanks to Robert Wilton who helped convert the YANG models to | |||
| a NMDA compatible model. | a NMDA compatible model. | |||
| 10. References | 10. References | |||
| 10.1. Normative references | 10.1. Normative references | |||
| [I-D.scharf-tcpm-yang-tcp] | ||||
| Scharf, M., Murgai, V., and M. Jethanandani, "YANG Model | ||||
| for Transmission Control Protocol (TCP) Configuration", | ||||
| draft-scharf-tcpm-yang-tcp-04 (work in progress), February | ||||
| 2020. | ||||
| [RFC1997] Chandra, R., Traina, P., and T. Li, "BGP Communities | [RFC1997] Chandra, R., Traina, P., and T. Li, "BGP Communities | |||
| Attribute", RFC 1997, DOI 10.17487/RFC1997, August 1996, | Attribute", RFC 1997, DOI 10.17487/RFC1997, August 1996, | |||
| <https://www.rfc-editor.org/info/rfc1997>. | <https://www.rfc-editor.org/info/rfc1997>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2439] Villamizar, C., Chandra, R., and R. Govindan, "BGP Route | [RFC2439] Villamizar, C., Chandra, R., and R. Govindan, "BGP Route | |||
| skipping to change at page 124, line 34 ¶ | skipping to change at page 124, line 39 ¶ | |||
| [I-D.ietf-bfd-yang] | [I-D.ietf-bfd-yang] | |||
| Rahman, R., Zheng, L., Jethanandani, M., Pallagatti, S., | Rahman, R., Zheng, L., Jethanandani, M., Pallagatti, S., | |||
| and G. Mirsky, "YANG Data Model for Bidirectional | and G. Mirsky, "YANG Data Model for Bidirectional | |||
| Forwarding Detection (BFD)", draft-ietf-bfd-yang-17 (work | Forwarding Detection (BFD)", draft-ietf-bfd-yang-17 (work | |||
| in progress), August 2018. | in progress), August 2018. | |||
| [I-D.ietf-rtgwg-policy-model] | [I-D.ietf-rtgwg-policy-model] | |||
| Qu, Y., Tantsura, J., Lindem, A., and X. Liu, "A YANG Data | Qu, Y., Tantsura, J., Lindem, A., and X. Liu, "A YANG Data | |||
| Model for Routing Policy Management", draft-ietf-rtgwg- | Model for Routing Policy Management", draft-ietf-rtgwg- | |||
| policy-model-08 (work in progress), January 2020. | policy-model-16 (work in progress), June 2020. | |||
| [RFC3765] Huston, G., "NOPEER Community for Border Gateway Protocol | [RFC3765] Huston, G., "NOPEER Community for Border Gateway Protocol | |||
| (BGP) Route Scope Control", RFC 3765, | (BGP) Route Scope Control", RFC 3765, | |||
| DOI 10.17487/RFC3765, April 2004, | DOI 10.17487/RFC3765, April 2004, | |||
| <https://www.rfc-editor.org/info/rfc3765>. | <https://www.rfc-editor.org/info/rfc3765>. | |||
| [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. | [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. | |||
| Pignataro, "The Generalized TTL Security Mechanism | Pignataro, "The Generalized TTL Security Mechanism | |||
| (GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007, | (GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007, | |||
| <https://www.rfc-editor.org/info/rfc5082>. | <https://www.rfc-editor.org/info/rfc5082>. | |||
| [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | |||
| Authentication Option", RFC 5925, DOI 10.17487/RFC5925, | Authentication Option", RFC 5925, DOI 10.17487/RFC5925, | |||
| June 2010, <https://www.rfc-editor.org/info/rfc5925>. | June 2010, <https://www.rfc-editor.org/info/rfc5925>. | |||
| [RFC7454] Durand, J., Pepelnjak, I., and G. Doering, "BGP Operations | [RFC7454] Durand, J., Pepelnjak, I., and G. Doering, "BGP Operations | |||
| and Security", BCP 194, RFC 7454, DOI 10.17487/RFC7454, | and Security", BCP 194, RFC 7454, DOI 10.17487/RFC7454, | |||
| February 2015, <https://www.rfc-editor.org/info/rfc7454>. | February 2015, <https://www.rfc-editor.org/info/rfc7454>. | |||
| [RFC7854] Scudder, J., Ed., Fernando, R., and S. Stuart, "BGP | ||||
| Monitoring Protocol (BMP)", RFC 7854, | ||||
| DOI 10.17487/RFC7854, June 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7854>. | ||||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
| Appendix A. Examples | Appendix A. Examples | |||
| This section tries to show some examples in how the model can be | This section tries to show some examples in how the model can be | |||
| used. | used. | |||
| skipping to change at page 132, line 10 ¶ | skipping to change at page 132, line 10 ¶ | |||
| } | } | |||
| organization | organization | |||
| "Newafi model group."; | "Newafi model group."; | |||
| contact | contact | |||
| "abc@newafi.com"; | "abc@newafi.com"; | |||
| description | description | |||
| "This YANG module defines and uses new AFI."; | "This YANG module defines and uses new AFI."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Creating new AFI and using in this model"; | "Creating new AFI and using in this model"; | |||
| reference | reference | |||
| "RFC XXXX: BGP YANG Model for Service Provider Network."; | "RFC XXXX: BGP YANG Model for Service Provider Network."; | |||
| } | } | |||
| identity foo { | identity foo { | |||
| base bt:afi-safi-type; | base bt:afi-safi-type; | |||
| description | description | |||
| skipping to change at page 133, line 27 ¶ | skipping to change at page 133, line 27 ¶ | |||
| } | } | |||
| organization | organization | |||
| "Newco model group."; | "Newco model group."; | |||
| contact | contact | |||
| "abc@newco.com"; | "abc@newco.com"; | |||
| description | description | |||
| "This YANG module deviates IETF BGP YANG module."; | "This YANG module deviates IETF BGP YANG module."; | |||
| revision 2020-02-24 { | revision 2020-06-28 { | |||
| description | description | |||
| "Creating NewCo deviations to ietf-bgp model"; | "Creating NewCo deviations to ietf-bgp model"; | |||
| reference | reference | |||
| "RFC XXXX: BGP YANG module for Service Provider Network."; | "RFC XXXX: BGP YANG module for Service Provider Network."; | |||
| } | } | |||
| deviation "/bgp:bgp/bgp:global/bgp:graceful-restart/" + | deviation "/bgp:bgp/bgp:global/bgp:graceful-restart/" + | |||
| "bgp:restart-time" { | "bgp:restart-time" { | |||
| deviate not-supported; | deviate not-supported; | |||
| skipping to change at page 133, line 49 ¶ | skipping to change at page 133, line 49 ¶ | |||
| deviation "/bgp:bgp/bgp:global/bgp:graceful-restart/" + | deviation "/bgp:bgp/bgp:global/bgp:graceful-restart/" + | |||
| "bgp:stale-route-time" { | "bgp:stale-route-time" { | |||
| deviate not-supported; | deviate not-supported; | |||
| } | } | |||
| } | } | |||
| Authors' Addresses | Authors' Addresses | |||
| Mahesh Jethanandani | Mahesh Jethanandani | |||
| VMware | Kloud Services | |||
| Email: mjethanandani@gmail.com | Email: mjethanandani@gmail.com | |||
| Keyur Patel | Keyur Patel | |||
| Arrcus | Arrcus | |||
| CA | CA | |||
| USA | USA | |||
| Email: keyur@arrcus.com | Email: keyur@arrcus.com | |||
| Susan Hares | Susan Hares | |||
| End of changes. 142 change blocks. | ||||
| 440 lines changed or deleted | 450 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||