diff options
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-bfd.yang')
-rw-r--r-- | src/plugins/yang/openconfig/openconfig-bfd.yang | 738 |
1 files changed, 0 insertions, 738 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-bfd.yang b/src/plugins/yang/openconfig/openconfig-bfd.yang deleted file mode 100644 index fc573e5..0000000 --- a/src/plugins/yang/openconfig/openconfig-bfd.yang +++ /dev/null @@ -1,738 +0,0 @@ -module openconfig-bfd { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/bfd"; - - prefix "oc-bfd"; - - // import some basic types - import openconfig-extensions { prefix "ocext"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-interfaces { prefix "oc-if"; } - import openconfig-inet-types { prefix "oc-inet"; } - import openconfig-if-types { prefix "oc-ift"; } - import openconfig-network-instance { prefix "oc-ni"; } - import openconfig-policy-types { prefix "oc-pol-types"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) - configuration and operational state."; - - ocext:openconfig-version "0.1.0"; - - revision "2017-11-17" { - description - "Update version number for initial sharing."; - reference "0.1.0"; - } - - revision "2017-10-19" { - description - "Adopt OpenConfig types models, type corrections"; - reference "0.0.2"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - typedef bfd-session-state { - type enumeration { - enum UP { - description - "The BFD session is perceived to be up by the system."; - } - enum DOWN { - description - "The BFD session is perceived to be down by the system."; - } - enum ADMIN_DOWN { - description - "The BFD session is administratively disabled."; - } - enum INIT { - description - "The BFD session is perceived to be initialising by the - system."; - } - } - description - "The state of the BFD session according to the system referred - to by the context of the leaf."; - reference - "RFC5880 - Bidirectional Forwarding Detection, Section - 4.1"; - } - - typedef bfd-diagnostic-code { - type enumeration { - enum NO_DIAGNOSTIC { - value 0; - description - "No diagnostic code was specified, or the session has not - changed state."; - } - enum DETECTION_TIMEOUT { - value 1; - description - "The control detection time expired: no BFD packet was - received within the required period."; - } - enum ECHO_FAILED { - value 2; - description - "The BFD echo function failed - echo packets have not been - received for the required period of time."; - } - enum FORWARDING_RESET { - value 3; - description - "The forwarding plane in the local system was reset - such - that the remote system cannot rely on the forwarding state of - the device specifying this error code."; - } - enum PATH_DOWN { - value 4; - description - "Signalling outside of BFD specified that the path underlying - this session has failed."; - } - enum CONCATENATED_PATH_DOWN { - value 5; - description - "When a BFD session runs over a series of path segments, this - error code indicates that a subsequent path segment (i.e., - one in the transmit path between the source and destination - of the session) has failed."; - } - enum ADMIN_DOWN { - value 6; - description - "The BFD session has been administratively disabled by the - peer."; - } - enum REVERSE_CONCATENATED_PATH_DOWN { - value 7; - description - "In the case that a BFD session is running over a series of - path segments, this error code indicates that a path segment - on the reverse path (i.e., in the transmit direction from the - destination to the source of the session) has failed."; - } - } - description - "Diagnostic codes defined by BFD. These typically indicate the - reason for a change of session state."; - reference - "RFC5880 - Bidirectional Forwarding Detection, Section - 4.1"; - } - - - grouping bfd-interface-config { - description - "Top-level per-interface configuration parameters for BFD."; - - leaf id { - type string; - description - "A unique identifier for the interface."; - } - - leaf enabled { - type boolean; - description - "When this leaf is set to true then the BFD session is enabled - on the specified interface - if it is set to false, it is - administratively disabled."; - } - - leaf local-address { - type oc-inet:ip-address; - description - "The source IP address to be used for BFD sessions over this - interface."; - } - - leaf desired-minimum-tx-interval { - type uint32; - units microseconds; - description - "The minimum interval between transmission of BFD control - packets that the operator desires. This value is advertised to - the peer, however the actual interval used is specified by - taking the maximum of desired-minimum-tx-interval and the - value of the remote required-minimum-receive interval value. - - This value is specified as an integer number of microseconds."; - } - - leaf required-minimum-receive { - type uint32; - units microseconds; - description - "The minimum interval between received BFD control packets that - this system should support. This value is advertised to the - remote peer to indicate the maximum frequency (i.e., minimum - inter-packet interval) between BFD control packets that is - acceptable to the local system."; - } - - // rjs: Could have required-minimum-echo-receive here, but this is - // generally not configurable. - - leaf detection-multiplier { - type uint16 { - range "1..max"; - } - description - "The number of packets that must be missed to declare this - session as down. The detection interval for the BFD session - is calculated by multiplying the value of the negotiated - transmission interval by this value."; - } - - leaf enable-per-member-link { - type boolean; - default false; - description - "When this leaf is set to true - BFD will be enabled on - each member interface of the aggregated Ethernet bundle."; - - when "/oc-if:interfaces/oc-if:interface" + - "[name=current()/../../interface-ref/config/interface]/" + - "oc-if:state/oc-if:type = 'oc-ift:IF_AGGREGATE'" { - description - "Include per-member link BFD only when the type of - interface is a link aggregate."; - } - } - } - - grouping bfd-interface-state { - // placeholder - description - "Operational state parameters relating to BFD running on an - interface."; - } - - grouping bfd-session-state-mode-timers-common { - description - "Common operational state parameters that are re-used across - both asynchronous and echo modes of BFD."; - - leaf last-packet-transmitted { - type uint64; - description - "The date and time at which the last BFD packet - was transmitted for this session, expressed as the number - of nanoseconds since the Unix Epoch (January 1, 1970, - 00:00 UTC)."; - } - - leaf last-packet-received { - type uint64; - description - "The date and time at which the last BFD packet - was received for this session, expressed as the number - of nanoseconds since the Unix Epoch (January 1, 1970, - 00:00 UTC)."; - } - - leaf transmitted-packets { - // TODO: looks to be unsupported on JUNOS - type uint64; - description - "The number of packets that have been transmitted - by the local system."; - } - - leaf received-packets { - // TODO: looks to be unsupported on JUNOS - type uint64; - description - "The number of packets that have been received by the - local system from the remote neighbour."; - } - - leaf up-transitions { - // TODO: looks to only be supported in SROS - type uint64; - description - "The number of times that the adjacency with the neighbor - has transitioned into the up state."; - } - } - - grouping bfd-session-state-sessiondetails-common { - description - "Common session details for a BFD session."; - - leaf session-state { - type bfd-session-state; - description - "The state of the BFD session perceived by the local system."; - - } - - leaf remote-session-state { - type bfd-session-state; - description - "The reported state of the BFD session according to the remote - system. This state reflects the last state reported in a BFD - control packet."; - } - - leaf last-failure-time { - type oc-types:timeticks64; - description - "The time of the last transition of the BFD session out of - the UP state, expressed as the number of nanoseconds since - the Unix epoch."; - } - - leaf failure-transitions { - type uint64; - description - "The number of times that the BFD session has transitioned - out of the UP state."; - } - - leaf local-discriminator { - type string; - description - "A unique identifier used by the local system to identify this - BFD session."; - } - - leaf remote-discriminator { - type string; - description - "A unique identified used by the remote system to identify this - BFD session."; - } - - leaf local-diagnostic-code { - type bfd-diagnostic-code; - description - "The local BFD diagnostic code indicating the most recent - reason for failure of this BFD session."; - } - - leaf remote-diagnostic-code { - type bfd-diagnostic-code; - description - "The remote BFD diagnostic code indicating the remote system's - reason for failure of the BFD session"; - } - - leaf remote-minimum-receive-interval { - type uint32; - description - "The value of the minimum receive interval that was specified - in the most recent BFD control packet received from the peer."; - } - - leaf demand-mode-requested { - type boolean; - description - "This leaf is set to true when the remote system has requested - demand mode be run for this session."; - } - - leaf remote-authentication-enabled { - type boolean; - description - "This leaf is set to true when the remote system has specified - that authentication is present for the BFD session."; - } - - leaf remote-control-plane-independent { - type boolean; - description - "This leaf is set to true when the remote system has specified - that the hardware implementing this BFD session is independent - of the control plane's liveliness."; - } - } - - - grouping bfd-session-state-async-common { - description - "Common parameters for asynchronous BFD sessions"; - - container async { - description - "Operational state parameters specifically relating to - asynchronous mode of BFD."; - - uses bfd-session-state-mode-timers-common; - } - } - - grouping bfd-session-state-echo-common { - description - "Common parameters for echo-mode BFD sessions."; - - container echo { - description - "Operational state parameters specifically relating to the - echo mode of BFD."; - - leaf active { - type boolean; - description - "This leaf is set to true when echo mode is running between - the local and remote system. When it is set to false, solely - asynchronous mode is active."; - } - - uses bfd-session-state-mode-timers-common; - } - } - - - grouping bfd-session-state-common { - description - "Common operational state parameters that may be re-used across - multiple BFD session contexts."; - - leaf local-address { - type oc-inet:ip-address; - description - "The IP address used by the local system for this BFD session."; - } - - leaf remote-address { - type oc-inet:ip-address; - description - "The IP address used by the remote system for this BFD session."; - } - - leaf-list subscribed-protocols { - type identityref { - base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; - } - description - "Indicates the set of protocols that currently use - this BFD session for liveliness detection."; - } - - uses bfd-session-state-sessiondetails-common; - uses bfd-session-state-echo-common; - uses bfd-session-state-async-common; - } - - grouping bfd-session-microbfd-common { - description - "BFD session parameters utilised only for micro-BFD sessions."; - - uses bfd-session-state-sessiondetails-common; - uses bfd-session-state-async-common; - } - - grouping bfd-interface-peer-state { - description - "Per-peer, per-interface operational state parameters for BFD."; - - uses bfd-session-state-common; - } - - grouping bfd-interface-microbfd-config { - description - "Configuration parameters for a microBFD session on an - interface."; - - leaf local-address { - type oc-inet:ip-address; - description - "The local IP address used by the system for the micro-BFD session - specified."; - } - - leaf remote-address { - type oc-inet:ip-address; - description - "The remote IP destination that should be used by the system for - the micro-BFD session specified."; - } - - leaf member-interface { - type leafref { - path "/oc-if:interfaces/" + - "oc-if:interface/oc-if:config/oc-if:name"; - } - // rjs: Note that this does not restrict to only interfaces that - // are part of the current LAG. An implementation should return - // NOK if such an interface is specified. - description - "Reference to a member link of the aggregate interface being - described."; - } - } - - grouping bfd-interface-microbfd-state { - description - "Operational state parameters relating to a micro-BFD session on - an interface."; - - uses bfd-session-microbfd-common; - } - - grouping bfd-interface-microbfd-structural { - description - "Structural grouping for micro-bfd configuration and state - parameters."; - - container micro-bfd-sessions { - description - "Parameters relating to micro-BFD sessions associated - with the interface."; - - list micro-bfd-session { - description - "This list contains configuration and state parameters - relating to micro-BFD session."; - reference - "RFC7130 - Bidirectional Forwarding Detection (BFD) - on Link Aggregation Group (LAG) Interfaces."; - - key "member-interface"; - - leaf member-interface { - type leafref { - path "../config/member-interface"; - } - description - "A reference to the member interface of the link - aggregate."; - } - - container config { - description - "Configuration parameters for the micro-BFD session."; - uses bfd-interface-microbfd-config; - } - - container state { - config false; - description - "Operational state parameters for the micro-BFD session."; - uses bfd-interface-microbfd-config; - uses bfd-interface-microbfd-state; - } - } - when "/oc-if:interfaces/oc-if:interface" + - "[name=current()/../interface-ref/config/interface]/" + - "oc-if:state/oc-if:type = 'oc-ift:IF_AGGREGATE'" { - description - "Include per-member link BFD only when the type of - interface is a link aggregate."; - } - } - } - - grouping bfd-interface-peer-structural { - description - "Structural grouping for BFD peers (in the context of an interface)."; - - container peers { - description - "Parameters relating to the BFD peers which are seen - over this interface."; - - list peer { - key "local-discriminator"; - config false; - - description - "Parameters relating to the BFD peer specified by the - remote address."; - - leaf local-discriminator { - type leafref { - path "../state/local-discriminator"; - } - description - "The local discriminator, which is unique for the - session on the system."; - } - - container state { - config false; - description - "Operational state parameters for the BFD session."; - - uses bfd-interface-peer-state; - } - } - } - } - - grouping bfd-top { - description - "Structural grouping for Bidirectional Forwarding Detection (BFD)."; - - container bfd { - description - "Configuration and operational state parameters for BFD."; - reference "RFC5880, RFC5881"; - - container interfaces { - description - "Interfaces on which BFD sessions are to be enabled."; - - list interface { - key "id"; - - description - "Per-interface configuration and state parameters for BFD."; - - leaf id { - type leafref { - path "../config/id"; - } - description - "A reference to an identifier for the interface on which - BFD is enabled."; - } - - container config { - description - "Configuration parameters for BFD on the specified - interface."; - uses bfd-interface-config; - } - - container state { - config false; - description - "Operational state parameters for BFD on the specified - interface."; - uses bfd-interface-config; - uses bfd-interface-state; - } - - uses oc-if:interface-ref; - - uses bfd-interface-microbfd-structural; - uses bfd-interface-peer-structural; - } - } - } - } - - grouping enable-bfd-config { - description - "Configuration parameters relating to enabling BFD."; - - leaf enabled { - type boolean; - description - "When this leaf is set to true, BFD is used to detect the - liveliness of the remote peer or next-hop."; - } - } - - grouping enable-bfd-state { - description - "Operational state parameters relating to enabling BFD."; - - leaf associated-session { - // TODO: this is a leafref to something unique, but seems - // like it might be expensive for the NMS to find out since - // it will need to cycle through all interfaces looking for - // the associated local-discriminator. - type leafref { - path "/bfd/interfaces/interface/peers/peer/local-discriminator"; - } - description - "A reference to the BFD session that is tracking the liveliness - of the remote entity."; - } - - // - // A fix to the above is to have the following leaf to show which - // interface is associated. - // - // leaf associated-interface { - // type leafref { - // path "/bfd/interfaces/interface/config/id"; - // } - // } - } - - grouping bfd-enable { - description - "Grouping which can be included in a protocol wishing to enable - BFD."; - - container enable-bfd { - description - "Enable BFD for liveliness detection to the next-hop or - neighbour."; - - container config { - description - "Configuration parameters relating to enabling BFD."; - - uses enable-bfd-config; - } - - container state { - config false; - description - "Operational state parameters relating to enabing BFD."; - - uses enable-bfd-config; - uses enable-bfd-state; - } - } - } - - // rjs - TODO - should these be specified within each model? The - // answer here is probably yes, since otherwise openconfig - // network-instance ends up with a circular reference. - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:protocols/oc-ni:protocol/oc-ni:bgp/" + - "oc-ni:neighbors/oc-ni:neighbor" { - description - "Augment the BGP routing protocol to add a link to BFD for - neighbour detection."; - - uses bfd-enable; - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:protocols/oc-ni:protocol/oc-ni:bgp/" + - "oc-ni:peer-groups/oc-ni:peer-group" { - description - "Augment the BGP routing protocol to add a link to BFD for - neighbor detection when specified within a peer-group."; - - uses bfd-enable; - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:protocols/oc-ni:protocol/oc-ni:static-routes/" + - "oc-ni:static/oc-ni:next-hops/oc-ni:next-hop" { - description - "Augment the static route configuration to allow a next-hop - to be tracked by BFD."; - - uses bfd-enable; - } - - uses bfd-top; -} |