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 16 skipping to change at page 46, line 17
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 39 skipping to change at page 82, line 21
} }
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. 140 change blocks. 
439 lines changed or deleted 449 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/