This YANG module describes the configuration and operational model for bridge domain. Terms and Acronyms AC : Attachment Circ...
Version: 2019-07-01
module cisco-bridge-domain { yang-version 1; namespace "urn:cisco:params:xml:ns:yang:cisco-bridge-domain"; prefix bd; import cisco-semver { prefix cisco-semver; } import ietf-interfaces { prefix if; } import ietf-yang-types { prefix yang; } import cisco-bridge-common { prefix cbridge; } import cisco-storm-control { prefix cstormctrl; } import cisco-pw { prefix l2vpn-pw; } organization "Cisco Systems, Inc."; contact "Cisco Systems, Inc. Customer Service Postal: 170 W Tasman Drive San Jose, CA 95134 Tel: +1 1800 553-NETS E-mail: cs-yang@cisco.com"; description "This YANG module describes the configuration and operational model for bridge domain. Terms and Acronyms AC : Attachment Circuits BD : Bridge Domain BCB : Backbone Core Bridge BEB : Backbone Edge Bridge B-MAC : Backbone MAC Address CE : Customer Edge C-MAC : Customer/Client MAC Address DHCP : Dynamic Host Configuration Protocol DAI : Dynamic ARP Inspection EVC : Ethernet Virtual Circuit IGMP : Internet Group Management Protocol IPSG : IP Source Guard L2VPN : Layer 2 Virtual Private Network MLD : Multicast Listener Discovery PBB : Provider Backbone Bridge VLAN : Virtual Local Area Network "; revision "2019-07-01" { description "Establish semantic version baseline"; } revision "2016-12-14" { description "Removed cisco govern extension"; } revision "2014-12-01" { description "Proposed"; reference "TODO"; } cisco-semver:module-version "1.0.0"; feature parameterized-bridge-domains { description "This feature represents ability to dynamically create bridge-domains."; } feature clear-bridge-domain { description "This features represents ability to clear mac-address table and restart bridge-domains."; reference "IOS-XR: clear l2vpn bridge-domain <>"; } feature configurable-bd-groups { description "This feature represents ability to group bridge domains under bridge group."; } feature configurable-bd-mtu { description "This feature represents ability to configure MTU for the bridge domain."; } feature configurable-bd-mac-features { description "This feature represents ability to configure MAC features. This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-flooding-mode { description "This feature represents ability to configure flood mode for the bridge domains."; } feature configurable-bd-mac-event-action { description "This feature represents ability to configure mac event actions. This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-mac-secure { description "This feature represents ability to configure mac secure feature This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-flooding { description "This feature represents ability to configure flooding feature. This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-storm-control { description "This feature represents ability to configure storm control feature. This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-dai { description "This feature represents ability to configure Dynamic ARP inspection feature. This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-ipsg { description "This feature represents ability to configure IP source guard feature. This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-snooping-profiles { description "This feature represents ability to configure snooping profiles for the bridge domain. This feature is applicable for both bridge domains and bridge domain members."; } feature configurable-bd-static-mac { description "This feature represents ability to configure static mac list."; } feature configurable-bd-sh-group-number { description "This feature represents ability to configure split horizon group number config."; } feature configurable-bd-member-features { description "This feature represents ability to configure advance features on bridge-domain members."; } typedef bridge-domain-ref { type leafref { path "/bd:bridge-domain-config/bd:bridge-domains/bd:bridge-domain/bd:id"; } description "Reference to bridge-domain instance id."; } typedef bridge-domain-oper-ref { type leafref { path "/bd:bridge-domain-state/bd:bridge-domains/bd:bridge-domain/bd:id"; } description "Reference to bridge-domain instance id."; } typedef bridge-domain-state-type { type enumeration { enum "up" { value 0; description "Bridge domain is operationally Up."; } enum "down" { value 1; description "Bridge domain is operationally Down."; } enum "admin-down" { value 2; description "Bridge domain is shutdown by administrator."; } } description "Bridge domain states."; } grouping bd-member-features { description "Bridge domain member specific feature grouping. This grouping is applicable to all attachment circuit (AC) and access pseudo-wire members."; container split-horizon-group { presence "Existence of this container represents Split Horizon configuration. When Split Horizon group number is not configured, device assigns default group numbers to ACs or PWs"; description "Bridge domain aggregates attachment circuits (ACs) and pseudowires (PWs) in one or more groups called Split Horizon Groups. When applied to bridge domains, Split Horizon refers to the flooding and forwarding behavior between members of a Split Horizon group. In general, frames received on one member of a split horizon group are not flooded out to the other members."; leaf id { if-feature configurable-bd-sh-group-number; type uint16; mandatory true; description "Split Horizon group number for bridge domain member."; } } // container split-horizon-group container mac { description "MAC features for bridge domain."; uses cbridge:mac-learning-config { description "MAC learning features: - enable / disable mac learning - mac limit - mac limit actions - mac limit notifications"; } uses cbridge:mac-aging-config { description "MAC aging features: - aging time - aging type"; } uses cbridge:mac-event-action-config { if-feature configurable-bd-mac-event-action; description "Enable or disable mac-flush upon port-down."; } uses cbridge:mac-secure-config { if-feature configurable-bd-mac-secure; description "MAC secure features for bridge domain members."; augment secure { description "This augment provides configuration leaf to enable disable mac secure feature."; leaf enabled { type boolean; description "Enable or disable mac secure feature"; } } } } // container mac uses cbridge:snooping-profile-config { if-feature configurable-bd-snooping-profiles; description "Snooping profile configuration for bridge-domain members."; } uses cbridge:mac-flooding-config { if-feature configurable-bd-flooding; description "MAC flooding features: - enable / disable flooding - enable / disable unknown unicast flooding"; } uses cstormctrl:storm-control-config { if-feature configurable-bd-storm-control; description "Storm control feature for bridge domain members."; } } // grouping bd-member-features grouping bd-pbb-features { description "This grouping defined Provider Backbone Bridge (PBB) features for bridge-domain instance."; container pbb { description "Provider Backbone Bridge (PBB) features."; choice pbb-role-type { description "PBB role for the bridge-domain"; container edge { description "PBB egde configurations for bridge-domain."; leaf i-sid { type uint32 { range "256..16777214"; } mandatory true; description "PBB Instance Identifier (I-SID) value."; } leaf core-bridge { type string; mandatory true; description "Core bridge-domain name for the current edge bridge-domain."; } list static-mac-addresses { key "c-mac"; description "Static MAC address entry."; leaf c-mac { type yang:mac-address; description "Static C-MAC address."; } leaf b-mac { type yang:mac-address; mandatory true; description "Static B-MAC address."; } } // list static-mac-addresses leaf unknown-ucast-bmac { type yang:mac-address; description "Unknown unicast B-MAC address."; } } // container edge container core { description "PBB core configurations for bridge-domain."; } // container core } // choice pbb-role-type } // container pbb } // grouping bd-pbb-features grouping bd-capabilities { description "This grouping defines capability definitions for bridge-domains at system or module scope."; leaf max-bd { type uint32; description "Maximum number of bridge-domains suported."; } leaf max-ac-per-bd { type uint32; description "Maximum number of attachment circuits per bridge-domains."; } leaf max-pw-per-bd { type uint32; description "Maximum number of access pseudowires per bridge-domains"; } leaf max-vfi-per-bd { type uint32; description "Maximum number of virtual forwarding instances per bridge-domains."; } leaf max-sh-group-per-bd { type uint32; description "Maximum number of Split Horizon groups per bridge-domains."; } } // grouping bd-capabilities container bridge-domain-config { description "This container defines overall configuration data for bridge -domains on a network device."; container global { description "Global configurations for bridge-domains."; leaf bd-state-notification-enabled { type boolean; description "If this leaf is set to true, then it enables the emission of 'bd-state-notification'; otherwise these notifications are not emitted."; } leaf bd-state-notification-rate { type uint32; description "This leaf defines the maximum number of 'bd-state- notification' that can be emitted from the device per second."; } container pbb { description "Provider Backbone Bridging (PBB) related global configurations."; leaf backbone-src-mac { type yang:mac-address; description "Backbone source mac address configuration for Provider Backbone Bridging (PBB)"; } } // container pbb } // container global container bridge-groups { if-feature configurable-bd-groups; description "Collection of bridge-groups. A Bridge-group is logical grouping construct for bridge domains. It defines grouping of bridge-domains under a named bridge-group. For example all bridge-domains belonging to a single customer can be grouped under a bridge -group"; list bridge-group { key "name"; description "Bridge-group configuration."; leaf name { type string { length "1..32"; } description "Bridge-group name"; } } // list bridge-group } // container bridge-groups container bridge-domains { description "Collection of bridge domains."; list bridge-domain { key "id"; description "Definition of a bridge-domain."; leaf id { type string; description "Bridge domain name or number"; reference "CLI: bridge-domain <id>"; } leaf bridge-group { if-feature configurable-bd-groups; type leafref { path "/bd:bridge-domain-config/bd:bridge-groups/bd:bridge-group/bd:name"; } mandatory true; description "Reference to bridge-group name. If bridge-groups are supported, referred bridge-group MUST be created first."; } leaf enabled { type boolean; default "true"; description "This leaf represents configured admin status of the bridge domain"; reference "CLI: shutdown"; } leaf bd-status-change-notification { type boolean; description "Enable/disable bridge-domain status change notification. If true, any change in bridge-domain operational status will be notified to client via 'bd-status-change' notification."; } container members { description "Collection of bridge-domain members."; list ac-member { key "interface"; description "List of Attachment circuits for current bridge-domain."; leaf interface { type if:interface-ref; description "Reference to an attchment circuit interface instance which is configured to be part of this bridge-domain."; } uses bd-member-features { if-feature configurable-bd-member-features; description "Attachment circuit features for bridge domain."; } uses cbridge:dynamic-arp-inspection-config { if-feature configurable-bd-dai; description "Dynamic ARP inspection parameters for bridge domain members"; augment dynamic-arp-inspection { description "This augment provides configuration leaf to enable disable Dynamic ARP inspection."; leaf enable { type boolean; description "Enable or disable Dynamic ARP Inspection."; } } } uses cbridge:ip-source-guard-config { if-feature configurable-bd-ipsg; description "IP source guard feature for bridge domain member."; augment ip-source-guard { description "This augment provides configuration leaf to enable disable IP source guard."; leaf enable { type boolean; description "Enable or disable IP source guard feature."; } } } } // list ac-member list vfi-member { key "interface"; description "List of Virtual Forrwarding Interfaces for current bridge-domain."; leaf interface { type if:interface-ref; must "/if:interfaces/if:interface/if:type = 'ifVfiType'" { description "Refernce to VFI type interface."; } description "Reference to an Virtual Forwarding Interface instance which is configured to be part of this bridge-domain"; } } // list vfi-member container access-pw-member { description "Collection of access pseudowire members. A Pseudowires can be a regular interface with ifType 'ifPwType' or it can represented as a non-interface context. This container provides model definition for both types of the pseudowires."; list access-pw-if-member { key "interface"; description "List of interface based access pseudowires for current bridge-domain."; leaf interface { type if:interface-ref; must "/if:interfaces/if:interface/if:type = 'ifPwType'" { description "Refernce to pseudo-wire type interface."; } description "Reference to an access pseudo-wire interface instance which is configured to be part of this bridge domain"; } } // list access-pw-if-member list pw-neighbor-spec { key "neighbor-ip-address vc-id"; description "Collection of neighbor specification based pseudo-wires."; uses l2vpn-pw:pw-neighbor-config { description "Access pseudowire specification."; } uses bd-member-features { if-feature configurable-bd-member-features; description "Bridge domain member features for neighbor spec based pseudowires."; } container backup { description "Backup pseudo-wire."; uses l2vpn-pw:pw-backup-neighbor-config { description "Backup pseudowire specification."; } } // container backup } // list pw-neighbor-spec } // container access-pw-member } // container members leaf mtu { if-feature configurable-bd-mtu; type uint16 { range "46..65535"; } description "The MTU size for bridge domain. All bridge domain members must have same MTU size to be operational in the domain"; reference "CLI xr: mtu <>"; } leaf flooding-mode { if-feature configurable-bd-flooding-mode; type enumeration { enum "convergence-optimized" { value 0; description "Flood mode optimized for convergence."; } enum "resilience-optimized" { value 1; description "Flood mode optimized for resiliency"; } } description "Flood modes for optimization."; reference "CLI xr: flood-mode { convergence-optimized | resilience-optimized } "; } container mac { description "MAC features for bridge domain."; uses cbridge:mac-learning-config { description "MAC learning configurations for bridge-domain."; } uses cbridge:mac-aging-config { description "MAC aging configurations for bridge-domain."; } uses cbridge:mac-event-action-config { if-feature configurable-bd-mac-event-action; description "Event based action configuration for bridge domain."; } uses cbridge:mac-flooding-config { if-feature configurable-bd-flooding; description "MAC flooding features: - enable / disable flooding - enable / disable unknown unicast flooding"; } uses cbridge:mac-secure-config { if-feature configurable-bd-mac-secure; description "MAC secure features: - enable / disable mac secure - mac secure action - mac secure logging"; refine secure { presence "Existence of this container represents that MAC secure is enabled on the bridge domain."; } } uses cbridge:static-mac-list-config { if-feature configurable-bd-static-mac; description "Static mac address list"; reference "CLI xr: mac static-address H.H.H drop"; } } // container mac uses cbridge:dynamic-arp-inspection-config { if-feature configurable-bd-dai; description "Dynamic ARP inspection parameters."; refine dynamic-arp-inspection { presence "Existence of this container represents that Dynamic ARP inspection is enabled on the bridge domain"; } } uses cbridge:ip-source-guard-config { if-feature configurable-bd-ipsg; description "IP source guard feature for bridge domain."; refine ip-source-guard { presence "Existence of this container represents that IP source guard is enabled on the bridge domain"; } } uses cstormctrl:storm-control-config { if-feature configurable-bd-storm-control; description "Storm control feature for bridge domain"; } uses cbridge:snooping-profile-config { if-feature configurable-bd-snooping-profiles; description "Snooping profile configuration for bridge-domain members."; refine igmp-snooping/profile-name { mandatory false; } augment igmp-snooping { description "Add configuration leaf to enable disable igmp snooping"; leaf disabled { type empty; description "Disable IGMP snooping."; } } } } // list bridge-domain } // container bridge-domains } // container bridge-domain-config container bridge-domain-state { config false; description "This container defines bridge-domain operational data."; container system-capabilities { description "This container defines system capabilities for bridge domain."; uses bd-capabilities { description "Bridge domain system capabilities"; } leaf max-interflex-if-per-bd { type uint32; description "Maximum number of Interflex interfaces per bridge-domains."; } } // container system-capabilities container module-capabilities { description "This container defines module capabilities for bridge domain."; list modules { key "name"; description "Collection of capabillity statements for hardware module in the system."; leaf name { type string; description "Name of the hardware module such as linecards, for which capability is described."; } leaf max-mac-per-bd { type uint32; description "Maximum number of MAC addresses per bridge-domains supported by this module."; } leaf max-pdd-edge-bd { type uint32; description "Maximum number of PBB Edge type bridge-domains supported by this module."; } uses bd-capabilities { description "Bridge domain capabilities supported by this module."; } } // list modules } // container module-capabilities container bridge-domains { description "Bridge domain state data."; list bridge-domain { key "id"; description "Collection of bridge-domain state data."; leaf id { type string; description "Bridge domain name or number"; } leaf bd-state { type bridge-domain-state-type; mandatory true; description "Bridge domain operational/admin status."; } leaf create-time { type yang:timestamp; description "System time when this bridge-domain was created"; } leaf last-status-change { type yang:timeticks; description "Number of consecutive ticks since bridge-domain status was changed last time."; } leaf mac-limit-reached { type boolean; description "This leaf indicates if MAC address limit has been reached."; } leaf p2mp-pw-disabled { type boolean; description "Point to Mutipoint pseudowire state"; } container members { description "Collection of bridge-domain members."; list ac-member { key "interface"; description "List of attachment circuits for this bridge domains"; leaf interface { type if:interface-state-ref; description "Reference to an instance of Bridge domain attachment circuit (AC) interface name."; } leaf static-mac-count { type uint32; description "Number of static MAC address configured on this bridge-domain member interface."; } container dai-stats { description "Dynamic ARP Inspection (DAI) statistics."; leaf packet-drops { type yang:counter64; description "Number of packets dropped by interface due to DAI actions."; } leaf byte-drops { type yang:counter64; description "Number of bytes dropped by interface due to DAI actions."; } } // container dai-stats container ipsg-stats { description "IPSG stats."; leaf packet-drops { type yang:counter64; description "Number of packets dropped by interface due to IPSG actions."; } leaf byte-drops { type yang:counter64; description "Number of bytes dropped by interface due to IPSG actions."; } } // container ipsg-stats uses cstormctrl:storm-control-stats; } // list ac-member list vfi-member { key "interface"; description "Reference to an instance of Bridge domain Virtual Forwarding Instance (VFI) name."; leaf interface { type if:interface-state-ref; must "/if:interfaces-state/if:interface/if:type = 'ifVfiType'" { description "Filter only VFI interfaces"; } description "Bridge domain memeber interface name."; } uses cbridge:mac-flooding-state; } // list vfi-member list access-pw-member { key "vc-peer-address vc-id"; description "Collection of access pseudowire members of the bridge domain."; uses l2vpn-pw:pw-oper-ref-keys { description "Pseudowire oper keys. These leaves can uniquely identify a pseudowire instance in the pseudowire oper data tree."; } uses cbridge:mac-flooding-state { description "MAC flooding state data"; } } // list access-pw-member } // container members } // list bridge-domain } // container bridge-domains list mac-table { key "bd-id mac-address"; description "This list contains mac-address entries for bridge domains."; leaf bd-id { type string; description "Bridge-domain name where MAC entry is learnt."; } leaf mac-address { type yang:mac-address; description "MAC address."; } leaf mac-type { type enumeration { enum "static" { value 0; description "MAC address is configured statically."; } enum "dynamic" { value 1; description "MAC address is learnt dynamicaly."; } } description "MAC address type."; } leaf interface { type if:interface-ref; mandatory true; description "Reference to an interface instance where MAC address is learnt."; } leaf secure-mac { type boolean; description "Secure MAC address."; } leaf ntfy-mac { type boolean; description "TBD ?NTFY?"; } leaf age { type yang:timeticks; description "Time since mac address was learnt on the interface."; } leaf location { type string; description "Linecard / Module where mac address was learnt."; } } // list mac-table } // container bridge-domain-state notification bd-state-notification { description "This notification is generated when bridge domain state is changed. This notification can be enabled/disabled via configuration leaf 'bd-state-notification-enabled'"; leaf id { type bridge-domain-oper-ref; description "Reference to bridge-domain instance."; } leaf bd-state { type bridge-domain-state-type; description "New state of the bridge-domain."; } leaf time { type yang:timestamp; description "Timestamp of the state change event."; } } // notification bd-state-notification rpc clear-bridge-domain { if-feature clear-bridge-domain; description "Clear mac-address table for bridge-domain and allows a bridge to forward again after it was put in shutdown state as a result of exceeding the configured MAC limit."; reference "XR: clear l2vpn bridge-domain <>"; input { choice bridge-domains { mandatory true; description "Select bridge-domains to clear."; leaf all { type empty; description "Clear all bridge-domains configured on the device."; } leaf bd-id { type string; description "Clear a single bridge-domain"; } leaf bg-id { if-feature configurable-bd-groups; type string; description "Clears all bridge-domains under this bridge-group."; } } // choice bridge-domains } output { leaf errstr { type string; description "Error message from the device if RPC failed."; } } } // rpc clear-bridge-domain rpc clear-mac-address { description "This RPC allows to clear dynamically learnt mac-address entries from the mac-address table."; reference "XR: clear l2vpn forwarding mac-address-table <> IOS: clear bridge-domain <> mac table <>"; input { container bridge-domain { description "Clear mac-address entries for given bridge-domain(s)."; leaf bd-id { type string; mandatory true; description "Bridge-domain identifier, clear all mac-address entries dynamically learnt on this bridge-domain"; } leaf bg-id { if-feature configurable-bd-groups; type string; mandatory true; description "Bridge-group identifier, clear all mac-address entries from all bridge-domains under this bridge-group."; } } // container bridge-domain leaf interface { type if:interface-ref; description "Reference to an interface. Clear mac-addesses learnt by by this interface."; } leaf mac-address { type yang:mac-address; description "Clear a specific mac-address entry from the mac-table."; } } output { leaf errstr { type string; description "Error message from the device if RPC failed."; } } } // rpc clear-mac-address rpc create-parameterized-bridge-domains { if-feature parameterized-bridge-domains; description "Create bridge domains automatically from user defined parameters."; input { leaf parameter { type enumeration { enum "vlan" { value 0; description "Create bridge-domains from vlan encapsulations of the member interfaces."; } } description "Parameter for automatic bridge domain creation."; } list member { key "interface"; description "Bridge-domain member interface."; leaf interface { type if:interface-ref; description "Reference to an interface instance which is configured to be part of this bridge domain"; } } // list member } output { leaf errstr { type string; description "Error message from the device if RPC failed."; } } } // rpc create-parameterized-bridge-domains } // module cisco-bridge-domain
© 2023 YumaWorks, Inc. All rights reserved.