import bgp-multiprotocol { prefix bgp-mp; revision-date 2013-09-19; }
import bgp-rib { prefix rib; revision-date 2013-09-25; }
+ import bgp-rib-impl { prefix bgp-rib-impl; revision-date 2016-06-06; }
import bgp-types { prefix bgp-t; revision-date 2013-09-19; }
import odl-bgp-rib-cfg { prefix bgprib; revision-date 2013-07-01; }
- import odl-bgp-parser-spi-cfg { prefix bgpspi; revision-date 2013-11-15; }
import odl-bgp-rib-spi-cfg { prefix ribspi; revision-date 2013-11-15; }
- import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
+ import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
+ import ietf-yang-types { prefix yang; revision-date 2013-07-15; }
import opendaylight-md-sal-binding {prefix mdsb; revision-date 2013-10-28; }
+ import opendaylight-md-sal-dom {prefix sal; revision-date 2013-10-28; }
+ import opendaylight-md-sal-binding-v1-codec { prefix mdsb1; revision-date 2016-07-14; }
import netty { prefix netty; revision-date 2013-11-19; }
import config { prefix config; revision-date 2013-04-05; }
- import protocol-framework { prefix pf; revision-date 2014-03-13; }
- import odl-tcpmd5-cfg { prefix tcpmd5; revision-date 2014-04-27; }
- import odl-tcpmd5-netty-cfg { prefix tcpmd5n; revision-date 2014-04-27; }
import rpc-context { prefix rpcx; revision-date 2013-06-17; }
+ import odl-bgp-path-selection-mode { prefix bps; revision-date 2016-03-01;}
+ import bgp-peer { prefix peer; revision-date 2016-06-06; }
+ import bgp-stats-peer { prefix peer-stats; revision-date 2016-06-06; }
+ import bgp-stats-rib-impl { prefix rib-impl-stats; revision-date 2016-06-06; }
organization "Cisco Systems, Inc.";
accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html";
+ revision "2016-03-30" {
+ description
+ "Updated to simplify reconnection strategy.";
+ }
revision "2013-04-09" {
description
"Initial revision";
}
- identity base-bgp-parser {
- base config:module-type;
- config:java-name-prefix BaseBGPParser;
- config:provided-service bgpspi:extension;
- }
-
- augment "/config:modules/config:module/config:configuration" {
- case base-bgp-parser {
- when "/config:modules/config:module/config:type = 'base-bgp-parser'";
- }
- }
-
identity bgp-dispatcher {
description
"Service representing a BGP Dispatcher.";
base "config:service-type";
config:java-class "org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher";
+ config:disable-osgi-service-registration;
}
identity bgp-dispatcher-impl {
augment "/config:modules/config:module/config:configuration" {
case bgp-dispatcher-impl {
when "/config:modules/config:module/config:type = 'bgp-dispatcher-impl'";
-
- container bgp-extensions {
- uses config:service-ref {
- refine type {
- mandatory true;
- config:required-identity bgpspi:consumer-extensions;
- }
- }
- }
-
- container boss-group {
- uses config:service-ref {
- refine type {
- mandatory true;
- config:required-identity netty:netty-threadgroup;
- }
- }
- }
-
- container worker-group {
- uses config:service-ref {
- refine type {
- mandatory true;
- config:required-identity netty:netty-threadgroup;
- }
- }
- }
-
- container md5-channel-factory {
- uses config:service-ref {
- refine type {
- mandatory false;
- config:required-identity tcpmd5n:md5-channel-factory;
- }
- }
- }
-
- container md5-server-channel-factory {
- uses config:service-ref {
- refine type {
- mandatory false;
- config:required-identity tcpmd5n:md5-server-channel-factory;
- }
- }
- }
- }
- }
-
- identity base-bgp-rib {
- base config:module-type;
- config:provided-service ribspi:extension;
- config:java-name-prefix BaseBGPRIB;
- }
-
- augment "/config:modules/config:module/config:configuration" {
- case base-bgp-rib {
- when "/config:modules/config:module/config:type = 'base-bgp-rib'";
}
}
base "config:service-type";
config:java-class "org.opendaylight.protocol.bgp.rib.impl.spi.RIB";
+ config:disable-osgi-service-registration;
}
identity bgp-peer-registry {
base "config:service-type";
config:java-class "org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry";
+ config:disable-osgi-service-registration;
}
identity strict-bgp-peer-registry {
config:java-name-prefix StrictBgpPeerRegistry;
}
-
- augment "/config:modules/config:module/config:configuration" {
+ augment "/config:modules/config:module/config:configuration" {
case strict-bgp-peer-registry {
when "/config:modules/config:module/config:type = 'strict-bgp-peer-registry'";
}
identity bgp-peer-acceptor {
description
- "BGP peer acceptor that handles incomming bgp connections. Uses BGP peer registry to accept or decline incomming connections";
+ "BGP peer acceptor that handles incoming bgp connections. Uses BGP peer registry to accept or decline incoming connections";
base config:module-type;
config:java-name-prefix BGPPeerAcceptor;
uses config:service-ref {
refine type {
mandatory true;
- config:required-identity mdsb:binding-async-data-broker;
+ config:required-identity sal:dom-async-data-broker;
}
}
}
}
}
+ container bgp-peer-registry {
+ description "BGP peer registry where current instance of BGP peer will be registered.";
+ uses config:service-ref {
+ refine type {
+ // FIXME backwards compatibility. If not configured, GLOBAL instance is used
+ mandatory false;
+ config:required-identity bgp-peer-registry;
+ }
+ }
+ }
+
leaf application-rib-id {
type rib:application-rib-id;
mandatory true;
}
leaf bgp-peer-id {
- type inet:ipv4-address;
+ type bgp-t:bgp-id;
mandatory true;
}
}
config:java-class "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType";
}
+ identity add-path {
+ base "config:service-type";
+ config:java-class "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.mp.capabilities.add.path.capability.AddressFamilies";
+ }
+
+ identity add-path-impl {
+ config:provided-service add-path;
+ base config:module-type;
+ config:java-name-prefix AddPathImpl;
+ }
+
identity bgp-table-type-impl {
description
"Simple provider for bgp-table-type.";
case bgp-table-type-impl {
when "/config:modules/config:module/config:type = 'bgp-table-type-impl'";
- leaf afi {
- type identityref {
- base bgp-t:address-family;
+ uses bgp-mp:bgp-table-type;
+ }
+ }
+
+ augment "/config:modules/config:module/config:configuration" {
+ case add-path-impl {
+ when "/config:modules/config:module/config:type = 'add-path-impl'";
+ container address-family {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity bgp-table-type;
+ }
}
- mandatory true;
}
- leaf safi {
- type identityref {
- base bgp-t:subsequent-address-family;
- }
+ leaf send-receive {
+ type bgp-mp:send-receive;
mandatory true;
}
}
case bgp-peer {
when "/config:modules/config:module/config:type = 'bgp-peer'";
- leaf host {
- description "Remote host IP address";
- type inet:ip-address;
- mandatory true;
- }
-
- leaf port {
- description "Remote host port";
- type inet:port-number;
- default 179;
- }
-
- leaf holdtimer {
- type int16;
- default 180;
- }
-
- leaf initiate-connection {
- description "If true, connection will be initiated right away from current device.
- If not, the peer will only be registered to peer registry and available for incomming bgp connections.";
- type boolean;
- default true;
- }
+ uses peer:bgp-peer-config;
list advertized-table {
+ key "type name";
uses config:service-ref {
refine type {
mandatory true;
}
}
- leaf remote-as {
- description
- "Expected remote AS number. If not present, it is assumed
- to be the same as our local AS number.";
- type uint32;
+ list add-path {
+ key "type name";
+ uses config:service-ref {
+ refine type {
+ config:required-identity add-path;
+ }
+ }
}
- leaf password {
- type tcpmd5:rfc2385-key;
- description "RFC2385 shared secret";
+ container rpc-registry {
+ uses config:service-ref {
+ refine type {
+ mandatory false;
+ config:required-identity mdsb:binding-rpc-registry;
+ }
+ }
}
container rib {
}
}
- grouping message-state {
- leaf count {
- description "Total number of BGP messages.";
- type uint32;
- default 0;
- }
-
- leaf timestamp {
- description "The BGP message timestamp (seconds).";
- type uint32;
- default 0;
- }
- }
-
- grouping message-stats {
- container received {
- description "The received BGP messages statistics.";
- uses message-state;
- }
-
- container sent {
- description "The sent BGP messages statistics.";
- uses message-state;
- }
- }
-
- grouping error {
- leaf code {
- description "The BGP error code.";
- type uint8;
- default 0;
- }
-
- leaf sub-code {
- description "The BGP error sub-code.";
- type uint8;
- default 0;
- }
- }
-
- grouping preferences {
- leaf bgp-id {
- description "The BGP Identifier.";
- type string;
- default "";
- }
-
- leaf address {
- description "The IP address of BGP connection.";
- type string;
- default "";
- }
-
- leaf port {
- description "The port for connection between the BGP peers.";
- type uint16;
- default 0;
- }
-
- leaf as {
- description "Autonomous system number.";
- type uint32;
- default 0;
- }
-
- leaf holdtime {
- description "Time interval (in seconds) for HoldTimer proposed by the peer.";
- type uint16;
- default 0;
- }
-
- leaf four-octet-as-capability {
- description "The BGP peer 4 byte AS numbers support capability.";
- type boolean;
- default "false";
- }
-
- list advertized-table-types {
- description "The BGP Table-type capabilities advertized by the BGP peer.";
- leaf afi {
- description "Address Family Identifier.";
- type string;
- default "";
- }
- leaf safi {
- description "Subsequent Address Family Identifier.";
- type string;
- default "";
- }
- }
- }
-
identity peer-rpc;
augment "/config:modules/config:module/config:state" {
when "/config:modules/config:module/config:type = 'bgp-peer'";
rpcx:rpc-context-instance "peer-rpc";
+ uses peer-stats:bgp-peer-stats;
+ }
- container bgp-peer-state {
- list route-table {
-
- leaf table-type {
- description "The table name - composed of AFI and SAFI.";
- type string;
- }
-
- leaf routes-count {
- description "The total number of routes in table.";
- type uint32;
- default 0;
- }
- }
-
- leaf session-established-count {
- description "The total number of time the BGP session was transitioned to Up state.";
- type uint32;
- default 0;
- }
- }
-
- container bgp-session-state {
-
- leaf session-state {
- description "The BGP peer connection state.";
- type string;
- }
-
- leaf session-duration {
- description "The session duration (time formated d:HH:mm:ss).";
- type string;
- }
-
- leaf holdtime-current {
- description "Time interval (in seconds) for HoldTimer established with the peer.";
- type uint16;
- default 0;
- }
-
- leaf keepalive-current {
- description "Time interval (in seconds) for KeepAlive established with the peer.";
- type uint16;
- default 0;
- }
-
- container speaker-preferences {
- description "The BGP speaker preferences, to which this BGP peer is connected.";
- uses preferences;
- }
-
- container peer-preferences {
- description "The BGP peer preferences.";
- uses preferences;
- }
-
- container messages-stats {
- description "The BGP messages statistics.";
- container total-msgs {
- description "The statistics for all received/sent BGP messages.";
- uses message-stats;
- }
-
- container keep-alive-msgs {
- description "The statistics for received/sent BGP Keep-Alive messages.";
- uses message-stats;
- }
-
- container update-msgs {
- description "The statistics for received/sent BGP Update messages.";
- uses message-stats;
- }
+ case rib-impl {
+ when "/config:modules/config:module/config:type = 'rib-impl'";
- container error-msgs {
- container error-received {
- description "The received BGP Error (notification) messages statistics.";
- uses message-state;
- uses error;
- }
-
- container error-sent {
- description "The sent BGP Error (notification) messages statistics.";
- uses message-state;
- uses error;
- }
- }
- }
- }
+ uses rib-impl-stats:bgp-render-stats;
}
}
}
}
}
- }
+ }
- rpc reset-stats {
+ rpc reset-stats {
description "Reset the BGP peer statistics.";
input {
uses rpcx:rpc-context-ref {
}
}
}
- }
+ }
+
+ identity bgp-path-selection-mode {
+ description
+ "Service representing an address family + path selection mode.";
+
+ base "config:service-type";
+ config:java-class "org.opendaylight.protocol.bgp.rib.impl.spi.BGPBestPathSelection";
+ }
+
+ identity bgp-psm-impl {
+ base config:module-type;
+ config:provided-service bgp-path-selection-mode;
+ config:java-name-prefix BGPPSMImpl;
+ }
+
+ augment "/config:modules/config:module/config:configuration" {
+ case bgp-psm-impl {
+ when "/config:modules/config:module/config:type = 'bgp-psm-impl'";
+ container path-address-family {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity bgp-table-type;
+ }
+ }
+ }
+ container path-selection-mode {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity bps:path-selection-mode-factory;
+ }
+ }
+ }
+ }
+ }
identity rib-impl {
base config:module-type;
case rib-impl {
when "/config:modules/config:module/config:type = 'rib-impl'";
+ uses bgp-rib-impl:bgp-rib-impl-identifiers;
+
container extensions {
uses config:service-ref {
refine type {
}
}
- container session-reconnect-strategy {
+ container data-provider {
uses config:service-ref {
refine type {
mandatory true;
- config:required-identity pf:reconnect-strategy-factory;
+ config:required-identity mdsb:binding-async-data-broker;
}
}
}
- container tcp-reconnect-strategy {
+ container codec-tree-factory {
uses config:service-ref {
refine type {
mandatory true;
- config:required-identity pf:reconnect-strategy-factory;
+ config:required-identity mdsb1:binding-v1-codec-tree-factory;
}
}
}
- container data-provider {
+ container dom-data-provider {
uses config:service-ref {
refine type {
mandatory true;
- config:required-identity mdsb:binding-async-data-broker;
+ config:required-identity sal:dom-async-data-broker;
}
}
}
- leaf local-as {
- description "Our local AS number. Needed by best selection path attribute.";
- type uint32;
- mandatory true;
- }
-
- leaf bgp-rib-id {
- description "Our local BGP identifier. Needed by best selection path attribute.";
- mandatory true;
- type inet:ipv4-address;
- }
-
list local-table {
uses config:service-ref {
refine type {
}
}
- leaf rib-id {
- description "Identifier of this RIB in local data store.";
- type rib:rib-id;
- mandatory true;
+ list rib-path-selection-mode {
+ uses config:service-ref {
+ refine type {
+ config:required-identity bgp-path-selection-mode;
+ }
+ }
}
}
}