blob: 75eb155397cc792519d6fb789691e7c746cffaa9 [file] [log] [blame]
submodule openconfig-rib-bgp-attributes {
belongs-to openconfig-rib-bgp {
prefix "oc-rib-bgp";
}
// import some basic types
import ietf-inet-types { prefix inet; }
import openconfig-bgp-types { prefix oc-bgpt; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This submodule contains common data definitions for BGP
attributes for use in BGP RIB tables.";
oc-ext:openconfig-version "0.3.0";
revision "2016-10-17" {
description
"OpenConfig BGP RIB refactor";
reference "0.3.0";
}
grouping bgp-as-path-attr-state {
description
"Data for representing BGP AS-PATH attribute";
leaf type {
type oc-bgpt:as-path-segment-type;
description
"The type of AS-PATH segment";
}
leaf-list member {
type inet:as-number;
description
"List of the AS numbers in the AS-PATH segment";
}
}
grouping bgp-as-path-attr-top {
description
"Top-level grouping for AS-PATH attribute data";
container as-path {
description
"Enclosing container for the list of AS path segments.
In the Adj-RIB-In or Adj-RIB-Out, this list should show
the received or sent AS_PATH, respectively. For
example, if the local router is not 4-byte capable, this
value should consist of 2-octet ASNs or the AS_TRANS
(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 {
description
"Unkeyed list of AS PATH segments";
container state {
config false;
description
"Opstate data for AS-PATH segments";
uses bgp-as-path-attr-state;
}
}
}
}
grouping bgp-as4-path-attr-top {
description
"Top-level grouping for AS4-PATH attribute data";
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 {
description
"Unkeyed list of AS PATH segments";
container state {
config false;
description
"Opstate data for AS-PATH segments";
uses bgp-as-path-attr-state;
}
}
}
}
grouping bgp-community-attr-state {
description
"Common definition of BGP community attributes";
leaf-list community {
type union {
type oc-bgpt:bgp-well-known-community-type;
type oc-bgpt:bgp-std-community-type;
}
description
"List of standard or well-known BGP community
attributes.";
}
}
grouping bgp-extended-community-attr-state {
description
"Common definition of BGP extended community attribute";
leaf-list ext-community {
type oc-bgpt:bgp-ext-community-recv-type;
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 bgp-aggregator-attr-state {
description
"Operational state data for the BGP aggregator
attribute";
leaf as {
type inet:as-number;
description
"AS number of the autnonomous system that performed the
aggregation.";
}
leaf as4 {
type inet:as-number;
description
"AS number of the autnonomous 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.";
}
}
grouping bgp-aggregator-attr-top {
description
"Common definition of the BGP aggregator attribute";
container aggregator {
description
"BGP attribute indicating the prefix has been aggregated by
the specified AS and router.";
container state {
config false;
description
"Operational state data for BGP aggregator attribute";
uses bgp-aggregator-attr-state;
}
}
}
grouping bgp-shared-common-attr-state {
description
"Route attributes shared across route table entries,
common to both LOC-Rib and Adj-RIB";
leaf origin {
type oc-bgpt:bgp-origin-attr-type;
description
"BGP attribute defining the origin of the path information.";
}
leaf atomic-aggregate {
type boolean;
description
"BGP attribute indicating that the prefix is an atomic
aggregate, i.e., the peer selected a less specific
route without selecting a more specific route that is
included in it.";
}
leaf next-hop {
type inet:ip-address;
description
"BGP next hop attribute defining the IP address of the router
that should be used as the next hop to the destination";
}
leaf med {
type uint32;
description
"BGP multi-exit discriminator attribute used in BGP route
selection process";
}
leaf local-pref {
type uint32;
description
"BGP local preference attribute sent to internal peers to
indicate the degree of preference for externally learned
routes. The route with the highest local preference value
is preferred.";
}
leaf originator-id {
type inet:ipv4-address;
description
"BGP attribute that provides the id as an IPv4 address
of the originator of the announcement.";
reference
"RFC 4456 - BGP Route Reflection: An Alternative to Full
Mesh Internal BGP (IBGP)";
}
leaf-list cluster-list {
type inet:ipv4-address;
description
"Represents the reflection path that the route has passed.";
reference
"RFC 4456 - BGP Route Reflection: An Alternative to Full
Mesh Internal BGP (IBGP)";
}
leaf aigp {
type uint64;
description
"BGP path attribute representing the accumulated IGP metric
for the path";
reference
"RFC 7311 - The Accumulated IGP Metric Attribute for BGP";
}
}
grouping bgp-unknown-attr-flags-state {
description
"Operational state data for path attribute flags";
leaf optional {
type boolean;
description
"Defines whether the attribute is optional (if
set to true) or well-known (if set to false).
Set in the high-order bit of the BGP attribute
flags octet.";
reference
"RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";
}
leaf transitive {
type boolean;
description
"Defines whether an optional attribute is transitive
(if set to true) or non-transitive (if set to false). For
well-known attributes, the transitive flag MUST be set to
true. Set in the second high-order bit of the BGP attribute
flags octet.";
reference
"RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";
}
leaf partial {
type boolean;
description
"Defines whether the information contained in the optional
transitive attribute is partial (if set to true) or complete
(if set to false). For well-known attributes and for
optional non-transitive attributes, the partial flag
must be set to false. Set in the third high-order bit of
the BGP attribute flags octet.";
reference
"RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";
}
leaf extended {
type boolean;
description
"Defines whether the attribute length is one octet
(if set to false) or two octets (if set to true). Set in
the fourth high-order bit of the BGP attribute flags
octet.";
reference
"RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";
}
}
grouping bgp-unknown-attr-state {
description
"Operational state data for path attributes not shared
across route entries, common to LOC-RIB and Adj-RIB";
leaf attr-type {
type uint8;
description
"1-octet value encoding the attribute type code";
reference
"RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";
}
leaf attr-len {
type uint16;
description
"One or two octet attribute length field indicating the
length of the attribute data in octets. If the Extended
Length attribute flag is set, the length field is 2 octets,
otherwise it is 1 octet";
reference
"RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";
}
leaf attr-value {
type binary {
length 1..65535;
}
description
"Raw attribute value, not including the attribute
flags, type, or length. The maximum length
of the attribute value data is 2^16-1 per the max value
of the attr-len field (2 octets).";
reference
"RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";
}
}
grouping bgp-unknown-attr-top {
description
"Unknown path attributes that are not expected to be shared
across route entries, common to LOC-RIB and Adj-RIB";
container unknown-attributes {
description
"Unknown path attributes that were received in the UPDATE
message which contained the prefix.";
list unknown-attribute {
key "attr-type";
description
"This list contains received attributes that are unrecognized
or unsupported by the local router. The list may be empty.";
leaf attr-type {
type leafref {
path "../state/attr-type";
}
description
"Reference to the list key";
}
container state {
description
"Operational state for unknown route attributes";
uses bgp-unknown-attr-flags-state;
uses bgp-unknown-attr-state;
}
}
}
}
grouping bgp-loc-rib-attr-state {
description
"Path attributes that are not expected to be shared across
route entries, specific to LOC-RIB";
}
grouping bgp-adj-rib-attr-state {
description
"Path attributes that are not expected to be shared across
route entries, specific to Adj-RIB";
leaf path-id {
type uint32;
description
"When the BGP speaker supports advertisement of multiple
paths for a prefix, the path identifier is used to
uniquely identify a route based on the combination of the
prefix and path id. In the Adj-RIB-In, the path-id value is
the value received in the update message. In the Loc-RIB,
if used, it should represent a locally generated path-id
value for the corresponding route. In Adj-RIB-Out, it
should be the value sent to a neighbor when add-paths is
used, i.e., the capability has been negotiated.";
reference
"draft-ietf-idr-add-paths - Advertisement of Multiple Paths
in BGP";
}
}
}