This module contains a collection of YANG definitions for Cisco IOS-XR if-bundle package configuration. This YANG module augmen...
Version: 2020-12-21
module Cisco-IOS-XR-um-if-bundle-cfg { yang-version 1; namespace "http://cisco.com/ns/yang/Cisco-IOS-XR-um-if-bundle-cfg"; prefix um-if-bundle-cfg; import cisco-semver { prefix semver; } import ietf-inet-types { prefix inet; } import ietf-yang-types { prefix yang; } import Cisco-IOS-XR-um-interface-cfg { prefix a1; } import tailf-common { prefix tailf; } organization "Cisco Systems, Inc."; contact "Cisco Systems, Inc. Customer Service Postal: 170 West Tasman Drive San Jose, CA 95134 Tel: +1 800 553-NETS E-mail: cs-yang@cisco.com"; description "This module contains a collection of YANG definitions for Cisco IOS-XR if-bundle package configuration. This YANG module augments the modules with configuration data. Copyright (c) 2019-2021 by Cisco Systems, Inc. All rights reserved."; revision "2020-12-21" { description "Added logging container inside bundle 2020-12-15 Changed type of mlacp/switchover/maximize/bandwidth/threshold from uint32 to uint64"; } revision "2020-05-26" { description "- Updated integer range of mbps and gbps - Removed container period-on-bundle and when statement from container period - Added when statement as appropriate 2020-05-15 Leaf changes for ipv4 container 2020-04-27 model leaf changes for ipv4 and ipv6 containers"; } revision "2019-06-10" { description "Establish semantic version baseline."; } revision "2019-03-29" { description "Initial version"; } semver:module-version "2.1.0"; semver:module-version "2.0.0"; semver:module-version "1.0.1"; grouping GROUP-BUNDLE { container bundle { tailf:dependency "../a1:interface-name"; when "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Bundle interface commands"; container minimum-active { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Set the minimum criteria for the bundle to be active"; leaf links { type uint32 { range "1..64"; } description "Set the number of active links needed to bring up this bundle"; } container bandwidth { description "Set the bandwidth needed to bring up this bundle"; leaf bandwidth { type uint32 { range "1..4294967295"; } description "Set the bandwidth (in kbps) needed to bring up this bundle"; } leaf kbps { type uint32 { range "1..4294967295"; } description "Set the bandwidth in kbps"; } leaf mbps { type uint32 { range "1..4294967295"; } description "Set the bandwidth in mbps"; } leaf gbps { type uint32 { range "1..4294967295"; } description "Set the bandwidth in gbps"; } } // container bandwidth } // container minimum-active container maximum-active { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Set a limit on the number of links that can be active"; container links { presence "Indicates a links node is configured."; description "Set the maximum number of active links in this bundle"; leaf maximum-number { type uint32 { range "1..64"; } mandatory true; description "Set the maximum number of active links in this bundle"; } container hot-standby { presence "Indicates a hot-standby node is configured."; description "Hot-standby behaviour (non-standard, only effective on links with LACP enabled)"; } // container hot-standby } // container links } // container maximum-active leaf wait-while { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; type uint32 { range "0..2000"; } description "Set the wait-while timeout for members of this bundle"; } container shutdown { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; presence "Indicates a shutdown node is configured."; description "Bring all links in the bundle down to Standby state"; } // container shutdown container load-balancing { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Load balancing commands on a bundle"; container hash { description "Select the hash function used for traffic forwarded over the bundle"; container src-ip { presence "Indicates a src-ip node is configured."; description "Use the source IP as the hash function"; } // container src-ip container dst-ip { presence "Indicates a dst-ip node is configured."; description "Use the destination IP as the hash function"; } // container dst-ip } // container hash container localize { description "Restrict forwarding to members in the same rack where possible"; container threshold { description "The threshold below which traffic is no longer localized"; leaf links { type uint32 { range "1..64"; } description "Set a threshold of active member links per rack"; } } // container threshold } // container localize } // container load-balancing leaf lacp-delay { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; type uint32 { range "1000..15000"; } description "Set the lacp-delay timeout for members of this bundle"; } container logging { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "logging events for the members of this bundle"; container oos { presence "Indicates a oos node is configured."; description "Enable OOS logging events for the members of this bundle"; } // container oos } // container logging container lacp-fallback { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Set the lacp-fallback for members of this bundle"; leaf timeout { type uint32 { range "1..120"; } description "Set the timeout for lacp-fallback"; } } // container lacp-fallback container id { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]"; presence "Indicates a id node is configured."; description "Add the port to an aggregated interface."; leaf bundle-id { type uint32 { range "1..65535"; } mandatory true; description "Add the port to an aggregated interface."; } leaf mode { type enumeration { enum "on" { value 1; description "Do not run LACP over the port."; } enum "active" { value 2; description "Run LACP in active mode over the port."; } enum "passive" { value 3; description "Run LACP in passive mode over the port."; } enum "inherit" { value 4; description "Run LACP as configured in bundle."; } } mandatory true; description "Specify the mode of operation."; } } // container id leaf port-priority { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]"; type uint32 { range "1..65535"; } description "Priority for this port. Lower value is higher priority."; } } // container bundle container bfd { tailf:dependency "../a1:interface-name"; when "../a1:interface-name[starts-with(text(),'Bundle-')]"; description "BFD configuration on a bundle interface"; container address-family { description "Set configuration for a given address family"; container ipv4 { description "Set configuration for the IPv4 address family"; leaf destination { type inet:ipv4-address-no-zone; description "Set the destination address for the BFD session"; } container echo { description "Set the configuration for the echo mode of BFD"; leaf minimum-interval { type uint32 { range "15..2000"; } description "Set the preferred minimum interval for the BFD session"; } } // container echo leaf minimum-interval { type uint32 { range "3..30000"; } description "Set the preferred minimum interval for the BFD session"; } leaf multiplier { type uint32 { range "2..50"; } description "Set the preferred multiplier for the BFD session"; } container fast-detect { presence "Indicates a fast-detect node is configured."; description "Enable fast detection using BFD on bundle members"; } // container fast-detect container timers { description "Set the timers that determine when a BFD session defaults to down"; leaf start { type uint32 { range "1..3600"; } description "The time since starting a BFD session before it is considered to have gone down"; } leaf nbr-unconfig { type uint32 { range "1..3600"; } description "The time since a BFD signalled that a peer session is unconfigured before it is considered to have gone down"; } } // container timers } // container ipv4 container ipv6 { description "Set configuration for the IPv6 address family"; leaf destination { type inet:ipv6-address-no-zone; description "Set the destination address for the BFD session"; } leaf minimum-interval { type uint32 { range "3..30000"; } description "Set the preferred minimum interval for the BFD session"; } leaf multiplier { type uint32 { range "2..50"; } description "Set the preferred multiplier for the BFD session"; } container fast-detect { presence "Indicates a fast-detect node is configured."; description "Enable fast detection using BFD on bundle members"; } // container fast-detect container timers { description "Set the timers that determine when a BFD session defaults to down"; leaf start { type uint32 { range "1..3600"; } description "The time since starting a BFD session before it is considered to have gone down"; } leaf nbr-unconfig { type uint32 { range "1..3600"; } description "The time since a BFD signalled that a peer session is unconfigured before it is considered to have gone down"; } } // container timers } // container ipv6 } // container address-family container mode { must "cisco or ietf"; presence "Indicates a mode node is configured."; description "Standard used for per-member BFD"; container cisco { presence "Indicates a cisco node is configured."; description "Use Cisco standard for BoB"; } // container cisco container ietf { presence "Indicates a ietf node is configured."; description "Use IETF standard for BoB"; } // container ietf } // container mode } // container bfd container lacp { tailf:dependency "../a1:interface-name"; when "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Bundle interface LACP commands"; container switchover { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Modify behavior for switching between links in this bundle"; leaf suppress-flaps { type uint32 { range "100..65535"; } description "Set the time for which to suppress flaps during a LACP switchover"; } } // container switchover container churn { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Settings for LACP churn detection"; leaf logging { type enumeration { enum "actor" { value 1; description "Log actor churn events only"; } enum "partner" { value 2; description "Log partner churn events only"; } enum "both" { value 3; description "Log actor and partner churn events"; } } description "Set parameters for logging of churn events"; } } // container churn leaf collector-max-delay { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; type uint32 { range "0..65535"; } description "Collector max delay to be signaled to the LACP partner"; } container timeout { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Set timeout values for LACP-related timers"; leaf rx-default { type uint32 { range "0..3000"; } description "Set the timeout between expired and defaulted states"; } leaf actor-churn { type uint32 { range "0..120"; } description "Set the timeout to use before declaring actor churn"; } leaf partner-churn { type uint32 { range "0..120"; } description "Set the timeout to use before declaring partner churn"; } } // container timeout container cisco { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Cisco LACP extensions"; container enable { presence "Indicates a enable node is configured."; description "Enable the use of Cisco LACP extensions"; container link-order { description "Link ordering numbers processing"; container signaled { presence "Indicates a signaled node is configured."; description "Turn on processing of link ordering numbers"; } // container signaled } // container link-order } // container enable } // container cisco container non-revertive { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; presence "Indicates a non-revertive node is configured."; description "Set the bundle to lacp non-revertive mode"; } // container non-revertive leaf mode { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; type enumeration { enum "on" { value 0; description "Do not run LACP over the port."; } enum "active" { value 1; description "Run LACP in active mode over the port."; } enum "passive" { value 2; description "Run LACP in passive mode over the port."; } } description " Set the LACP mode on bundle to be used by its member link"; } container system { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Set the default system parameters for LACP bundles"; leaf priority { type uint32 { range "1..65535"; } description "The system priority to use in LACP negotiations."; } leaf mac { type yang:mac-address; description "Configure the system ID to use in LACP negotiations for this bundle."; } } // container system container period { must "transmission-id or short"; presence "Indicates a period node is configured."; description "Set the period on bundle to be used by its member link"; leaf transmission-id { type uint32 { range "2..30000"; } description " Set the period on bundle to be used by its member link"; } container short { presence "Indicates a short node is configured."; description "set the short period on bundle"; } // container short } // container period leaf default-threshold { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]"; type uint32 { range "1..3"; } description "Set the LACP packet default threshold"; } leaf expire-threshold { tailf:dependency "../../a1:interface-name"; when "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]"; type uint32 { range "1..3"; } description "Set the LACP packet expire threshold"; } } // container lacp container mlacp { tailf:dependency "../a1:interface-name"; when "../a1:interface-name[starts-with(text(),'Bundle-')]"; description "Multi-chassis LACP per-interface commands"; leaf iccp-group { type uint32 { range "1..4294967295"; } description "ICCP redundancy group related commands for this bundle."; } leaf port-priority { type uint32 { range "1..65535"; } description "Set the priority for all member links on this device when running mLACP."; } container switchover { description "Set the parameters for performing a switchover to/from the mLACP peer"; leaf type { type enumeration { enum "brute-force" { value 1; description "Force switchover by disabling all local member links"; } enum "revertive" { value 2; description "Revert based on configured priority values"; } } description "Set the type of switchover operation to use"; } container maximize { description "Parameters for switchover behavior to maximize operational links/bandwidth"; container links { presence "Indicates a links node is configured."; description "Compare the number of operational links"; leaf threshold { type uint32 { range "1..64"; } description "Set the threshold below which to switch to the peer if it has more links available"; } } // container links container bandwidth { presence "Indicates a bandwidth node is configured."; description "Compare the total bandwidth of operational links"; leaf threshold { type uint64 { range "1..18446744073709551615"; } description "Set the threshold below which to switch to the peer if it has more bandwidth available"; } } // container bandwidth } // container maximize leaf recovery-delay { type uint32 { range "0..65535"; } description "Specify delay before bundle becoming active after recovery from failure"; } } // container switchover } // container mlacp } // grouping GROUP-BUNDLE augment /a1:interfaces/a1:interface { uses GROUP-BUNDLE; } augment /a1:interfaces/a1:interface-preconfigure { uses GROUP-BUNDLE; } } // module Cisco-IOS-XR-um-if-bundle-cfg
© 2023 YumaWorks, Inc. All rights reserved.