| submodule openconfig-bgp-common { |
| |
| belongs-to openconfig-bgp { |
| prefix "oc-bgp"; |
| } |
| |
| import openconfig-extensions { prefix oc-ext; } |
| import openconfig-bgp-types { prefix oc-bgp-types; } |
| import openconfig-routing-policy { prefix oc-rpol; } |
| import openconfig-types { prefix oc-types; } |
| import openconfig-inet-types { prefix oc-inet; } |
| |
| // meta |
| organization |
| "OpenConfig working group"; |
| |
| contact |
| "OpenConfig working group |
| netopenconfig@googlegroups.com"; |
| |
| description |
| "This sub-module contains common groupings that are common across |
| multiple contexts within the BGP module. That is to say that they |
| may be application to a subset of global, peer-group or neighbor |
| contexts."; |
| |
| oc-ext:openconfig-version "4.0.1"; |
| |
| revision "2017-07-30" { |
| description |
| "Clarification of add-paths send-max leaf"; |
| reference "4.0.1"; |
| } |
| |
| revision "2017-07-10" { |
| description |
| "Add error notifications; moved add-paths config; add AS |
| prepend policy features; removed unneeded config leaves"; |
| reference "4.0.0"; |
| } |
| |
| revision "2017-02-02" { |
| description |
| "Bugfix to remove remaining global-level policy data"; |
| reference "3.0.1"; |
| } |
| |
| revision "2017-01-26" { |
| description |
| "Add dynamic neighbor support, migrate to OpenConfig types"; |
| reference "3.0.0"; |
| } |
| |
| revision "2016-06-21" { |
| description |
| "OpenConfig BGP refactor"; |
| reference "2.1.1"; |
| } |
| |
| grouping bgp-common-neighbor-group-timers-config { |
| description |
| "Config parameters related to timers associated with the BGP |
| peer"; |
| |
| leaf connect-retry { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| default 30; |
| description |
| "Time interval in seconds between attempts to establish a |
| session with the peer."; |
| } |
| |
| leaf hold-time { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| default 90; |
| description |
| "Time interval in seconds that a BGP session will be |
| considered active in the absence of keepalive or other |
| messages from the peer. The hold-time is typically |
| set to 3x the keepalive-interval."; |
| reference |
| "RFC 4271 - A Border Gateway Protocol 4, Sec. 10"; |
| } |
| |
| leaf keepalive-interval { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| default 30; |
| description |
| "Time interval in seconds between transmission of keepalive |
| messages to the neighbor. Typically set to 1/3 the |
| hold-time."; |
| } |
| |
| leaf minimum-advertisement-interval { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| default 30; |
| description |
| "Minimum time which must elapse between subsequent UPDATE |
| messages relating to a common set of NLRI being transmitted |
| to a peer. This timer is referred to as |
| MinRouteAdvertisementIntervalTimer by RFC 4721 and serves to |
| reduce the number of UPDATE messages transmitted when a |
| particular set of NLRI exhibit instability."; |
| reference |
| "RFC 4271 - A Border Gateway Protocol 4, Sec 9.2.1.1"; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-config { |
| description |
| "Neighbor level configuration items."; |
| |
| leaf peer-as { |
| type oc-inet:as-number; |
| description |
| "AS number of the peer."; |
| } |
| |
| leaf local-as { |
| type oc-inet:as-number; |
| description |
| "The local autonomous system number that is to be used |
| when establishing sessions with the remote peer or peer |
| group, if this differs from the global BGP router |
| autonomous system number."; |
| } |
| |
| leaf peer-type { |
| type oc-bgp-types:peer-type; |
| description |
| "Explicitly designate the peer or peer group as internal |
| (iBGP) or external (eBGP)."; |
| } |
| |
| leaf auth-password { |
| type oc-types:routing-password; |
| description |
| "Configures an MD5 authentication password for use with |
| neighboring devices."; |
| } |
| |
| leaf remove-private-as { |
| // could also make this a container with a flag to enable |
| // remove-private and separate option. here, option implies |
| // remove-private is enabled. |
| type oc-bgp-types:remove-private-as-option; |
| description |
| "Remove private AS numbers from updates sent to peers - when |
| this leaf is not specified, the AS_PATH attribute should be |
| sent to the peer unchanged"; |
| } |
| |
| leaf route-flap-damping { |
| type boolean; |
| default false; |
| description |
| "Enable route flap damping."; |
| } |
| |
| leaf send-community { |
| type oc-bgp-types:community-type; |
| default "NONE"; |
| description |
| "Specify which types of community should be sent to the |
| neighbor or group. The default is to not send the |
| community attribute"; |
| } |
| |
| leaf description { |
| type string; |
| description |
| "An optional textual description (intended primarily for use |
| with a peer or group"; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-transport-config { |
| description |
| "Configuration parameters relating to the transport protocol |
| used by the BGP session to the peer"; |
| |
| leaf tcp-mss { |
| type uint16; |
| description |
| "Sets the max segment size for BGP TCP sessions."; |
| } |
| |
| leaf mtu-discovery { |
| type boolean; |
| default false; |
| description |
| "Turns path mtu discovery for BGP TCP sessions on (true) |
| or off (false)"; |
| } |
| |
| leaf passive-mode { |
| type boolean; |
| default false; |
| description |
| "Wait for peers to issue requests to open a BGP session, |
| rather than initiating sessions from the local router."; |
| } |
| |
| leaf local-address { |
| type union { |
| type oc-inet:ip-address; |
| type string; |
| } |
| //TODO: the string should be converted to a leafref type |
| //to point to an interface when YANG 1.1 is available with |
| //leafrefs in union types. |
| description |
| "Set the local IP (either IPv4 or IPv6) address to use |
| for the session when sending BGP update messages. This |
| may be expressed as either an IP address or reference |
| to the name of an interface."; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-error-handling-config { |
| description |
| "Configuration parameters relating to enhanced error handling |
| behaviours for BGP"; |
| |
| leaf treat-as-withdraw { |
| type boolean; |
| default "false"; |
| description |
| "Specify whether erroneous UPDATE messages for which the |
| NLRI can be extracted are reated as though the NLRI is |
| withdrawn - avoiding session reset"; |
| reference "draft-ietf-idr-error-handling-16"; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-logging-options-config { |
| description |
| "Configuration parameters specifying the logging behaviour for |
| BGP sessions to the peer"; |
| |
| leaf log-neighbor-state-changes { |
| type boolean; |
| default "true"; |
| description |
| "Configure logging of peer state changes. Default is |
| to enable logging of peer state changes."; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-multihop-config { |
| description |
| "Configuration parameters specifying the multihop behaviour for |
| BGP sessions to the peer"; |
| |
| leaf enabled { |
| type boolean; |
| default "false"; |
| description |
| "When enabled the referenced group or neighbors are permitted |
| to be indirectly connected - including cases where the TTL |
| can be decremented between the BGP peers"; |
| } |
| |
| leaf multihop-ttl { |
| type uint8; |
| description |
| "Time-to-live value to use when packets are sent to the |
| referenced group or neighbors and ebgp-multihop is enabled"; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-route-reflector-config { |
| description |
| "Configuration parameters determining whether the behaviour of |
| the local system when acting as a route-reflector"; |
| |
| leaf route-reflector-cluster-id { |
| type oc-bgp-types:rr-cluster-id-type; |
| description |
| "route-reflector cluster id to use when local router is |
| configured as a route reflector. Commonly set at the group |
| level, but allows a different cluster |
| id to be set for each neighbor."; |
| } |
| |
| leaf route-reflector-client { |
| type boolean; |
| default "false"; |
| description |
| "Configure the neighbor as a route reflector client."; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-as-path-options-config { |
| description |
| "Configuration parameters allowing manipulation of the AS_PATH |
| attribute"; |
| |
| leaf allow-own-as { |
| type uint8; |
| default 0; |
| description |
| "Specify the number of occurrences of the local BGP speaker's |
| AS that can occur within the AS_PATH before it is rejected."; |
| } |
| |
| leaf replace-peer-as { |
| type boolean; |
| default "false"; |
| description |
| "Replace occurrences of the peer's AS in the AS_PATH |
| with the local autonomous system number"; |
| } |
| |
| leaf disable-peer-as-filter { |
| type boolean; |
| default "false"; |
| description |
| "When set to true, the system advertises routes to a peer |
| even if the peer's AS was in the AS path. The default |
| behavior (false) suppresses advertisements to peers if |
| their AS number is in the AS path of the route."; |
| } |
| } |
| |
| grouping bgp-common-neighbor-group-add-paths-config { |
| description |
| "Configuration parameters specfying whether the local system |
| will send or receive multiple paths using ADD_PATHS"; |
| |
| leaf receive { |
| type boolean; |
| default false; |
| description |
| "Enable capability negotiation to receive multiple path |
| advertisements for an NLRI from the neighbor or group"; |
| reference |
| "RFC 7911 - Advertisement of Multiple Paths in BGP"; |
| } |
| |
| leaf send { |
| type boolean; |
| default false; |
| description |
| "Enable capability negotiation to send multiple path |
| advertisements for an NLRI from the neighbor or group"; |
| reference |
| "RFC 7911 - Advertisement of Multiple Paths in BGP"; |
| } |
| |
| leaf send-max { |
| type uint8; |
| description |
| "The maximum total number of paths to advertise to neighbors |
| for a single NLRI. This includes the single best path as |
| well as additional paths advertised when add-paths is |
| enabled."; |
| } |
| |
| leaf eligible-prefix-policy { |
| type leafref { |
| path "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + |
| "oc-rpol:policy-definition/oc-rpol:name"; |
| } |
| description |
| "A reference to a routing policy which can be used to |
| restrict the prefixes for which add-paths is enabled"; |
| } |
| } |
| |
| grouping bgp-common-graceful-restart-config { |
| description |
| "Configuration parameters relating to BGP graceful restart."; |
| |
| leaf enabled { |
| type boolean; |
| description |
| "Enable or disable the graceful-restart capability."; |
| } |
| |
| leaf restart-time { |
| type uint16 { |
| range 0..4096; |
| } |
| description |
| "Estimated time (in seconds) for the local BGP speaker to |
| restart a session. This value is advertise in the graceful |
| restart BGP capability. This is a 12-bit value, referred to |
| as Restart Time in RFC4724. Per RFC4724, the suggested |
| default value is <= the hold-time value."; |
| } |
| |
| leaf stale-routes-time { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "An upper-bound on the time thate stale routes will be |
| retained by a router after a session is restarted. If an |
| End-of-RIB (EOR) marker is received prior to this timer |
| expiring stale-routes will be flushed upon its receipt - if |
| no EOR is received, then when this timer expires stale paths |
| will be purged. This timer is referred to as the |
| Selection_Deferral_Timer in RFC4724"; |
| } |
| |
| leaf helper-only { |
| type boolean; |
| description |
| "Enable graceful-restart in helper mode only. When this |
| leaf is set, the local system does not retain forwarding |
| its own state during a restart, but supports procedures |
| for the receiving speaker, as defined in RFC4724."; |
| } |
| } |
| |
| grouping bgp-common-use-multiple-paths-config { |
| description |
| "Generic configuration options relating to use of multiple |
| paths for a referenced AFI-SAFI, group or neighbor"; |
| |
| leaf enabled { |
| type boolean; |
| default false; |
| description |
| "Whether the use of multiple paths for the same NLRI is |
| enabled for the neighbor. This value is overridden by |
| any more specific configuration value."; |
| } |
| } |
| |
| grouping bgp-common-use-multiple-paths-ebgp-as-options-config { |
| description |
| "Configuration parameters specific to eBGP multipath applicable |
| to all contexts"; |
| |
| leaf allow-multiple-as { |
| type boolean; |
| default "false"; |
| description |
| "Allow multipath to use paths from different neighbouring |
| ASes. The default is to only consider multiple paths from |
| the same neighbouring AS."; |
| } |
| } |
| |
| grouping bgp-common-global-group-use-multiple-paths { |
| description |
| "Common grouping used for both global and groups which provides |
| configuration and state parameters relating to use of multiple |
| paths"; |
| |
| container use-multiple-paths { |
| description |
| "Parameters related to the use of multiple paths for the |
| same NLRI"; |
| |
| container config { |
| description |
| "Configuration parameters relating to multipath"; |
| uses bgp-common-use-multiple-paths-config; |
| } |
| container state { |
| config false; |
| description |
| "State parameters relating to multipath"; |
| uses bgp-common-use-multiple-paths-config; |
| } |
| |
| container ebgp { |
| description |
| "Multipath parameters for eBGP"; |
| container config { |
| description |
| "Configuration parameters relating to eBGP multipath"; |
| uses bgp-common-use-multiple-paths-ebgp-config; |
| } |
| container state { |
| config false; |
| description |
| "State information relating to eBGP multipath"; |
| uses bgp-common-use-multiple-paths-ebgp-config; |
| } |
| } |
| |
| container ibgp { |
| description |
| "Multipath parameters for iBGP"; |
| container config { |
| description |
| "Configuration parameters relating to iBGP multipath"; |
| uses bgp-common-use-multiple-paths-ibgp-config; |
| } |
| container state { |
| config false; |
| description |
| "State information relating to iBGP multipath"; |
| uses bgp-common-use-multiple-paths-ibgp-config; |
| } |
| } |
| } |
| } |
| |
| grouping bgp-common-use-multiple-paths-ebgp-config { |
| description |
| "Configuration parameters relating to multipath for eBGP"; |
| |
| leaf allow-multiple-as { |
| type boolean; |
| default "false"; |
| description |
| "Allow multipath to use paths from different neighbouring |
| ASes. The default is to only consider multiple paths from |
| the same neighbouring AS."; |
| } |
| |
| leaf maximum-paths { |
| type uint32; |
| default 1; |
| description |
| "Maximum number of parallel paths to consider when using |
| BGP multipath. The default is use a single path."; |
| } |
| } |
| |
| grouping bgp-common-use-multiple-paths-ibgp-config { |
| description |
| "Configuration parmaeters relating to multipath for iBGP"; |
| |
| leaf maximum-paths { |
| type uint32; |
| default 1; |
| description |
| "Maximum number of parallel paths to consider when using |
| iBGP multipath. The default is to use a single path"; |
| } |
| } |
| |
| grouping bgp-common-route-selection-options-config { |
| description |
| "Set of configuration options that govern best |
| path selection."; |
| |
| leaf always-compare-med { |
| type boolean; |
| default "false"; |
| description |
| "Compare multi-exit discriminator (MED) value from |
| different ASes when selecting the best route. The |
| default behavior is to only compare MEDs for paths |
| received from the same AS."; |
| } |
| |
| leaf ignore-as-path-length { |
| type boolean; |
| default "false"; |
| description |
| "Ignore the AS path length when selecting the best path. |
| The default is to use the AS path length and prefer paths |
| with shorter length."; |
| } |
| |
| leaf external-compare-router-id { |
| type boolean; |
| default "true"; |
| description |
| "When comparing similar routes received from external |
| BGP peers, use the router-id as a criterion to select |
| the active path."; |
| } |
| |
| leaf advertise-inactive-routes { |
| type boolean; |
| default "false"; |
| description |
| "Advertise inactive routes to external peers. The |
| default is to only advertise active routes."; |
| } |
| |
| leaf enable-aigp { |
| type boolean; |
| default false; |
| description |
| "Flag to enable sending / receiving accumulated IGP |
| attribute in routing updates"; |
| } |
| |
| leaf ignore-next-hop-igp-metric { |
| type boolean; |
| default "false"; |
| description |
| "Ignore the IGP metric to the next-hop when calculating |
| BGP best-path. The default is to select the route for |
| which the metric to the next-hop is lowest"; |
| } |
| } |
| |
| grouping bgp-common-route-selection-options { |
| description |
| "Configuration and state relating to route selection options"; |
| |
| container route-selection-options { |
| description |
| "Parameters relating to options for route selection"; |
| container config { |
| description |
| "Configuration parameters relating to route selection |
| options"; |
| uses bgp-common-route-selection-options-config; |
| } |
| container state { |
| config false; |
| description |
| "State information for the route selection options"; |
| uses bgp-common-route-selection-options-config; |
| } |
| } |
| } |
| |
| grouping bgp-common-state { |
| description |
| "Grouping containing common counters relating to prefixes and |
| paths"; |
| |
| leaf total-paths { |
| type uint32; |
| description |
| "Total number of BGP paths within the context"; |
| } |
| |
| leaf total-prefixes { |
| type uint32; |
| description |
| "Total number of BGP prefixes received within the context"; |
| } |
| } |
| |
| |
| } |
| |