| 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"; |
| } |
| } |
| } |