module ietf-l2vpn-ntw {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-ntw";
prefix l2vpn-ntw;
import ietf-inet-types {
prefix inet;
reference
"RFC 6991: Common YANG Data Types, Section 4";
}
import ietf-yang-types {
prefix yang;
reference
"RFC 6991: Common YANG Data Types, Section 3";
}
import ietf-vpn-common {
prefix vpn-common;
reference
"RFC 9181: A Common YANG for Data Model for Layer 2
and Layer 3 VPNs";
}
import iana-bgp-l2-encaps {
prefix iana-bgp-l2-encaps;
reference
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs.";
}
import iana-pseudowire-types {
prefix iana-pw-types;
reference
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs.";
}
import ietf-ethernet-segment {
prefix l2vpn-es;
reference
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs.";
}
import ietf-routing-types {
prefix rt-types;
reference
"RFC 8294: Common YANG Data Types for the Routing Area";
}
import ieee802-dot1q-types {
prefix dot1q-types;
reference
"IEEE Std 802.1Qcp-2018: Bridges and Bridged Networks -
Amendment: YANG Data Model";
}
organization
"IETF OPSA (Operations and Management Area) Working Group";
contact
"WG Web:
WG List:
Editor: Mohamed Boucadair
Editor: Samier Barguil
Author: Oscar Gonzalez de Dios
";
description
"This YANG module defines a network model for Layer 2 VPN
services.
Copyright (c) 2022 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
revision 2022-05-25 {
description
"Initial version.";
reference
"RFC XXXX: A YANG Network Data Model for Layer 2 VPNs.";
}
/* Features */
feature oam-3ah {
description
"Indicates the support of OAM 802.3ah.";
reference
"IEEE Std 802.3ah: Media Access Control Parameters, Physical
Layers, and Management Parameters for
Subscriber Access Networks";
}
/* Identities */
identity evpn-service-interface-type {
description
"Base identity for EVPN service interface type.";
}
identity vlan-based-service-interface {
base evpn-service-interface-type;
description
"VLAN-Based Service Interface.";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.1";
}
identity vlan-bundle-service-interface {
base evpn-service-interface-type;
description
"VLAN Bundle Service Interface.";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.2";
}
identity vlan-aware-bundle-service-interface {
base evpn-service-interface-type;
description
"VLAN-Aware Bundle Service Interface.";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN, Section 6.3";
}
identity mapping-type {
base vpn-common:multicast-gp-address-mapping;
description
"Identity for multicast group mapping type.";
}
identity loop-prevention-type {
description
"Identity of loop prevention.";
}
identity shut {
base loop-prevention-type;
description
"Shut protection type.";
}
identity trap {
base loop-prevention-type;
description
"Trap protection type.";
}
identity color-type {
description
"Identity of color types. A type is assigned to a service frame
to identify its QoS profile conformance.";
}
identity green {
base color-type;
description
"'green' color type. A service frame is 'green' if it is
conformant with the committed rate of the bandwidth profile.";
}
identity yellow {
base color-type;
description
"'yellow' color type. A service frame is 'yellow' if it exceeds
the committed rate but is conformant with the excess rate
of the bandwidth profile.";
}
identity red {
base color-type;
description
"'red' color type. A service famre is 'red' if it is not
conformant with both the committed and excess rates of the
bandwidth profile.";
}
identity t-ldp-pw-type {
description
"Identity for t-ldp-pw-type.";
}
identity vpws-type {
base t-ldp-pw-type;
description
"Virtual Private Wire Service (VPWS) t-ldp-pw-type.";
reference
"RFC 4664: Framework for Layer 2 Virtual Private Networks
(L2VPNs), Section 3.3";
}
identity vpls-type {
base t-ldp-pw-type;
description
"Virtual Private LAN Service (VPLS) t-ldp-pw-type.";
reference
"RFC 4762: Virtual Private LAN Service (VPLS) Using
Label Distribution Protocol (LDP)
Signaling, Section 6.1";
}
identity hvpls {
base t-ldp-pw-type;
description
"Identity for Hierarchical Virtual Private LAN Service (H-VPLS)
t-ldp-pw-type.";
reference
"RFC 4762: Virtual Private LAN Service (VPLS) Using
Label Distribution Protocol (LDP)
Signaling, Section 10";
}
identity lacp-mode {
description
"Identity of the LACP mode.";
}
identity lacp-active {
base lacp-mode;
description
"LACP active mode.
This mode refers to the mode where auto-speed negotiation
is initiated followed by an establishment of an
Ethernet channel with the other end.";
}
identity lacp-passive {
base lacp-mode;
description
"LACP passive mode.
This mode refers to the LACP mode where an endpoint does
not initiate the negotiation, but only responds to LACP
packets initiated by the other end (e.g., full duplex
or half duplex)";
}
identity pm-type {
description
"Identity for performance monitoring type.";
}
identity loss {
base pm-type;
description
"Loss measurement is the performance monitoring type.";
}
identity delay {
base pm-type;
description
"Delay measurement is the performance monitoring type.";
}
identity mac-learning-mode {
description
"Media Access Control (MAC) learning mode.";
}
identity data-plane {
base mac-learning-mode;
description
"User MAC addresses are learned through ARP broadcast.";
}
identity control-plane {
base mac-learning-mode;
description
"User MAC addresses are advertised through EVPN-BGP.";
}
identity mac-action {
description
"Base identity for a MAC action.";
}
identity drop {
base mac-action;
description
"Dropping a packet as the MAC action.";
}
identity flood {
base mac-action;
description
"Packet flooding as the MAC action.";
}
identity warning {
base mac-action;
description
"Log a warning message as the MAC action.";
}
identity precedence-type {
description
"Redundancy type. The service can be created
with primary and secondary signalization.";
}
identity primary {
base precedence-type;
description
"Identifies the main VPN network access.";
}
identity secondary {
base precedence-type;
description
"Identifies the secondary VPN network access.";
}
identity ldp-pw-type {
description
"Identity for allowed LDP-based pseudowire (PW) type.";
reference
"RFC 4762: Virtual Private LAN Service (VPLS) Using
Label Distribution Protocol (LDP)
Signaling, Section 6.1.1";
}
identity ethernet {
base ldp-pw-type;
description
"PW Ethernet type.";
}
identity ethernet-tagged {
base ldp-pw-type;
description
"PW Ethernet tagged mode type.";
}
/* Typedefs */
typedef ccm-priority-type {
type uint8 {
range "0..7";
}
description
"A 3-bit priority value to be used in the VLAN tag,
if present in the transmitted frame. A larger value
indicates a higher priority.";
}
/* Groupings */
grouping cfm-802 {
description
"Grouping for 802.1ag Connectivity Fault Management (CFM)
attributes.";
reference
"IEEE Std 802-1ag: Virtual Bridged Local Area Networks
Amendment 5: Connectivity Fault Management";
leaf maid {
type string;
description
"Maintenance Association Identifier (MAID).";
}
leaf mep-id {
type uint32;
description
"Local Maintenance Entity Group End Point (MEP) ID.";
}
leaf mep-level {
type uint32;
description
"MEP level.";
}
leaf mep-up-down {
type enumeration {
enum up {
description
"MEP is up.";
}
enum down {
description
"MEP is down.";
}
}
default "up";
description
"MEP up/down.";
}
leaf remote-mep-id {
type uint32;
description
"Remote MEP ID.";
}
leaf cos-for-cfm-pdus {
type uint32;
description
"Class of service for CFM PDUs.";
}
leaf ccm-interval {
type uint32;
units "milliseconds";
default "10000";
description
"Continuity Check Message (CCM) interval.";
}
leaf ccm-holdtime {
type uint32;
units "milliseconds";
default "35000";
description
"CCM hold time.";
}
leaf ccm-p-bits-pri {
type ccm-priority-type;
description
"The priority parameter for Continuity Check Messages (CCMs)
transmitted by the MEP.";
}
}
grouping y-1731 {
description
"Grouping for Y-1731";
reference
"ITU-T Y-1731: Operations, administration and maintenance
(OAM) functions and mechanisms for
Ethernet-based networks";
list y-1731 {
key "maid";
description
"List of configured Y-1731 instances.";
leaf maid {
type string;
description
"MAID.";
}
leaf mep-id {
type uint32;
description
"Local MEP ID.";
}
leaf pm-type {
type identityref {
base pm-type;
}
default "delay";
description
"Performance monitor types.";
}
leaf remote-mep-id {
type uint32;
description
"Remote MEP ID.";
}
leaf message-period {
type uint32;
units "milliseconds";
default "10000";
description
"Defines the interval between OAM messages.";
}
leaf measurement-interval {
type uint32;
units "seconds";
description
"Specifies the measurement interval for statistics.";
}
leaf cos {
type uint32;
description
"Identifies the Class of Service.";
}
leaf loss-measurement {
type boolean;
default "false";
description
"Controls whether loss measurement is ('true') or
disabled ('false').";
}
leaf synthethic-loss-measurement {
type boolean;
default "false";
description
"Indicates whether synthetic loss measurement is enabled
('true') or disabled ('false').";
}
container delay-measurement {
description
"Container for delay measurement";
leaf enable-dm {
type boolean;
default "false";
description
"Controls whether delay measurement is enabled ('true')
or disabled ('false').";
}
leaf two-way {
type boolean;
default "false";
description
"Whether delay measurement is two-way ('true') of one-
way ('false').";
}
}
leaf frame-size {
type uint32;
units "bytes";
description
"Indicates the frame size.";
}
leaf session-type {
type enumeration {
enum proactive {
description
"Proactive mode.";
}
enum on-demand {
description
"On-demand mode.";
}
}
default "on-demand";
description
"Specifies the session type.";
}
}
}
grouping parameters-profile {
description
"Container for per-service parameters.";
leaf local-autonomous-system {
type inet:as-number;
description
"Indicates a local AS Number (ASN).";
}
leaf svc-mtu {
type uint32;
units "bytes";
description
"Layer 2 service MTU.
It is also known as the maximum transmission
unit or maximum frame size.";
}
leaf ce-vlan-preservation {
type boolean;
description
"Preserve the CE-VLAN ID from ingress to egress, i.e.,
CE-VLAN tag of the egress frame is identical to
that of the ingress frame that yielded this egress
service frame. If all-to-one bundling within a site
is enabled, then preservation applies to all ingress
service frames. If all-to-one bundling is disabled,
then preservation applies to tagged ingress service
frames having CE-VLAN ID 1 through 4094.";
}
leaf ce-vlan-cos-preservation {
type boolean;
description
"CE VLAN CoS preservation. Priority Code Point (PCP) bits
in the CE-VLAN tag of the egress frame are identical to
those of the ingress frame that yielded this egress
service frame.";
}
leaf control-word-negotiation {
type boolean;
description
"Controls whether Control-word negotiation is enabled
(if set to true) or not (if set to false).";
reference
"RFC 8077: Pseudowire Setup and Maintenance
Using the Label Distribution Protocol (LDP),
Section 7";
}
container mac-policies {
description
"Container of MAC policies.";
container mac-addr-limit {
description
"Container of MAC address limit configuration.";
leaf limit-number {
type uint16;
description
"Maximum number of MAC addresses learned from
the customer for a single service instance.
The default value is '2' when this grouping
is used at the service level.";
}
leaf time-interval {
type uint32;
units "milliseconds";
description
"The aging time of the mac address.
The default value is '300' when this grouping
is used at the service level.";
}
leaf action {
type identityref {
base mac-action;
}
description
"Specifies the action when the upper limit is
exceeded: drop the packet, flood the packet,
or log a warning message (without dropping
the packet).
The default value is 'warning' when this
grouping is used at the service level.";
}
}
container mac-loop-prevention {
description
"Container for MAC loop prevention.";
leaf window {
type uint32;
units "seconds";
description
"The time interval over which a MAC mobility event
is detected and checked.
The default value is '180' when this grouping
is used at the service level.";
}
leaf frequency {
type uint32;
description
"The number of times to detect MAC duplication, where
a 'duplicate MAC address' situation has occurred
within the 'window' time interval and the duplicate
MAC address has been added to a list of duplicate
MAC addresses.
The default value is '5' when this grouping is
called at the service level.";
}
leaf retry-timer {
type uint32;
units "seconds";
description
"The retry timer. When the retry timer expires,
the duplicate MAC address will be flushed from
the MAC-VRF.";
}
leaf protection-type {
type identityref {
base loop-prevention-type;
}
description
"Protection type.
The default value is 'trap' when this grouping
is used at the service level.";
}
}
}
container multicast {
if-feature "vpn-common:multicast";
description
"Multicast container.";
leaf enabled {
type boolean;
default "false";
description
"Enables multicast.";
}
container customer-tree-flavors {
description
"Type of trees used by the customer.";
leaf-list tree-flavor {
type identityref {
base vpn-common:multicast-tree-type;
}
description
"Type of multicast tree to be used.";
}
}
}
}
grouping bandwidth-parameters {
description
"A grouping for bandwidth parameters.";
leaf cir {
type uint64;
units "bps";
description
"Committed Information Rate. The maximum
number of bits that a port can receive or
send during one-second over an
interface.";
}
leaf cbs {
type uint64;
units "bytes";
description
"Committed Burst Size. CBS controls the
bursty nature of the traffic. Traffic
that does not use the configured CIR
accumulates credits until the credits
reach the configured CBS.";
}
leaf eir {
type uint64;
units "bps";
description
"Excess Information Rate, i.e., excess
frame delivery allowed not subject to
SLA. The traffic rate can be limited
by EIR.";
}
leaf ebs {
type uint64;
units "bytes";
description
"Excess Burst Size. The bandwidth
available for burst traffic from the
EBS is subject to the amount of
bandwidth that is accumulated during
periods when traffic allocated by the
EIR policy is not used.";
}
leaf pir {
type uint64;
units "bps";
description
"Peak Information Rate, i.e., maximum
frame delivery allowed. It is equal
to or less than sum of CIR and EIR.";
}
leaf pbs {
type uint64;
units "bytes";
description
"Peak Burst Size.";
}
}
/* Main L2NM Container */
container l2vpn-ntw {
description
"Container for the L2NM.";
container vpn-profiles {
description
"Container for VPN profiles.";
uses vpn-common:vpn-profile-cfg;
}
container vpn-services {
description
"Container for L2VPN services.";
list vpn-service {
key "vpn-id";
description
"Container of a VPN service.";
uses vpn-common:vpn-description;
leaf parent-service-id {
type vpn-common:vpn-id;
description
"Pointer to the parent service that
triggered the L2NM.";
}
leaf vpn-type {
type identityref {
base vpn-common:service-type;
}
must "not(derived-from-or-self(current(), "
+ "'vpn-common:l3vpn'))" {
error-message "L3VPN is only applicable in L3NM.";
}
description
"Service type.";
}
leaf vpn-service-topology {
type identityref {
base vpn-common:vpn-topology;
}
description
"Defining service topology, such as
any-to-any, hub-spoke, etc.";
}
leaf bgp-ad-enabled {
type boolean;
description
"Indicates whether BGP auto-discovery is enabled
or disabled.";
}
leaf signaling-type {
type identityref {
base vpn-common:vpn-signaling-type;
}
description
"VPN signaling type.";
}
container global-parameters-profiles {
description
"Container for a list of global parameters
profiles.";
list global-parameters-profile {
key "profile-id";
description
"List of global parameters profiles.";
leaf profile-id {
type string;
description
"The identifier of the global parameters profile.";
}
uses vpn-common:route-distinguisher;
uses vpn-common:vpn-route-targets;
uses parameters-profile;
}
}
container underlay-transport {
description
"Container for the underlay transport.";
uses vpn-common:underlay-transport;
}
uses vpn-common:service-status;
container vpn-nodes {
description
"Set of VPN nodes that are involved in the L2NM.";
list vpn-node {
key "vpn-node-id";
description
"Container of the VPN nodes.";
leaf vpn-node-id {
type vpn-common:vpn-id;
description
"Sets the identifier of the VPN node.";
}
leaf description {
type string;
description
"Textual description of a VPN node.";
}
leaf ne-id {
type string;
description
"An identifier of the network element where
the VPN node is deployed. This identifier
uniquely identifies the network element within
an administrative domain.";
}
leaf role {
type identityref {
base vpn-common:role;
}
default "vpn-common:any-to-any-role";
description
"Role of the VPN node in the VPN.";
}
leaf router-id {
type rt-types:router-id;
description
"A 32-bit number in the dotted-quad format that is
used to uniquely identify a node within an
autonomous system (AS).";
}
container active-global-parameters-profiles {
description
"Container for a list of global parameters
profiles.";
list global-parameters-profile {
key "profile-id";
description
"List of active global parameters profiles.";
leaf profile-id {
type leafref {
path "../../../../../global-parameters-profiles"
+ "/global-parameters-profile/profile-id";
}
description
"Points to a global profile defined at the
service level.";
}
uses parameters-profile;
}
}
uses vpn-common:service-status;
container bgp-auto-discovery {
when "../../../bgp-ad-enabled = 'true'" {
description
"Only applies when BGP auto-discovery is enabled.";
}
description
"BGP is used for auto-discovery.";
choice bgp-type {
description
"Choice for the BGP type.";
case l2vpn-bgp {
description
"Container for BGP L2VPN.";
leaf vpn-id {
type vpn-common:vpn-id;
description
"VPN Identifier. This identifier serves to
unify components of a given VPN for the
sake of auto-discovery.";
reference
"RFC 6624: Layer 2 Virtual Private Networks
Using BGP for Auto-Discovery and
Signaling";
}
}
case evpn-bgp {
description
"EVPN case.";
leaf evpn-type {
type leafref {
path "../../../../vpn-type";
}
description
"EVPN type.";
}
leaf auto-rt-enable {
type boolean;
default "false";
description
"Enables/disabled RT auto-derivation based on
the ASN and Ethernet Tag ID.";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN,
Section 7.10.1";
}
leaf auto-route-target {
when "../auto-rt-enable = 'true'" {
description
"Can only be used when auto-RD is enabled.";
}
type rt-types:route-target;
config false;
description
"The value of the auto-assigned RT.";
}
}
}
uses vpn-common:route-distinguisher;
uses vpn-common:vpn-route-targets;
}
container signaling-option {
description
"Container for the L2VPN signaling.";
leaf advertise-mtu {
type boolean;
description
"Controls whether MTU is advertised.";
reference
"RFC 4667: Layer 2 Virtual Private Network (L2VPN)
Extensions for Layer 2 Tunneling
Protocol (L2TP), Section 4.3";
}
leaf mtu-allow-mismatch {
type boolean;
description
"When set to true, it allows MTU mismatch.";
reference
"RFC 4667: Layer 2 Virtual Private Network (L2VPN)
Extensions for Layer 2 Tunneling
Protocol (L2TP), Section 4.3";
}
leaf signaling-type {
type leafref {
path "../../../../signaling-type";
}
description
"VPN signaling type.";
}
choice signaling-option {
description
"Choice for the signaling-option.";
case bgp {
description
"BGP is used as the signaling protocol.";
choice bgp-type {
description
"Choice for the BGP type.";
case l2vpn-bgp {
description
"Container for BGP L2VPN.";
leaf ce-range {
type uint16;
description
"Determines the number of remote CEs with
which a given CE can communicate in the
context of a VPN.";
reference
"RFC 6624: Layer 2 Virtual Private Networks
Using BGP for Auto-Discovery and
Signaling";
}
leaf pw-encapsulation-type {
type identityref {
base iana-bgp-l2-encaps:bgp-l2-encaps-type;
}
description
"PW encapsulation type.";
}
container vpls-instance {
when "derived-from-or-self(../../../../"
+ "vpn-type, 'vpn-common:vpls')" {
description
"Only applies for VPLS.";
}
description
"VPLS instance.";
leaf vpls-edge-id {
type uint16;
description
"VPLS Edge Identifier (VE ID). This is
used when the same VE ID is configured
for the PE.";
reference
"RFC 4761: Virtual Private LAN Service
(VPLS) Using BGP for Auto-
Discovery and Signaling,
Section 3.5";
}
leaf vpls-edge-id-range {
type uint16;
description
"Specifies the size of the range of
VE ID in a VPLS service. The range
controls the size of the label
block advertised in the context of
a VPLS instance.";
reference
"RFC 4761: Virtual Private LAN Service
(VPLS) Using BGP for Auto-
Discovery and Signaling";
}
}
}
case evpn-bgp {
description
"Used for EVPN.";
leaf evpn-type {
type leafref {
path "../../bgp-auto-discovery/evpn-type";
}
description
"EVPN type.";
}
leaf service-interface-type {
type identityref {
base evpn-service-interface-type;
}
description
"EVPN service interface type.";
}
container evpn-policies {
description
"Includes a set of EVPN policies such
as those related to handling MAC
addresses.";
leaf mac-learning-mode {
type identityref {
base mac-learning-mode;
}
description
"Indicates through which plane MAC
addresses are advertised.";
}
leaf ingress-replication {
type boolean;
description
"Controls whether ingress replication is
enabled ('true') or disabled ('false').";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN,
Section 8.3.1.1";
}
leaf p2mp-replication {
type boolean;
description
"Controles whether P2MP replication is
enabled ('true') or disabled ('false')";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN,
Section 8.3.1.2";
}
container arp-proxy {
if-feature "vpn-common:ipv4";
description
"Top container for the ARP proxy.";
leaf enable {
type boolean;
default "false";
description
"Enables (when set to 'true') or
disables (when set to 'false')
ARP proxy.";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN,
Section 10";
}
leaf arp-suppression {
type boolean;
default "false";
description
"Enables (when set to 'true') or
disables (when set to 'false') ARP
suppression.";
reference
"RFC 7432: BGP MPLS-Based Ethernet
VPN";
}
leaf ip-mobility-threshold {
type uint16;
description
"It is possible for a given host (as
defined by its IP address) to move
from one ES to another.
IP mobility threshold specifies the
number of IP mobility events
that are detected for a given IP
address within the
detection-threshold before it
is identified as a duplicate IP
address.
Once the detection threshold is
reached, updates for the IP address
are suppressed.";
}
leaf duplicate-ip-detection-interval {
type uint16;
units "seconds";
description
"The time interval used in detecting a
duplicate IP address. Duplicate IP
address detection number of host moves
are allowed within this interval
period.";
}
}
container nd-proxy {
if-feature "vpn-common:ipv6";
description
"Top container for the ND proxy.";
leaf enable {
type boolean;
default "false";
description
"Enables (when set to 'true') or
disables (when set to 'false') ND
proxy.";
reference
"RFC 7432: BGP MPLS-Based Ethernet VPN,
Section 10";
}
leaf nd-suppression {
type boolean;
default "false";
description
"Enables (when set to 'true') or
disables (when set to 'false')
Neighbor Discovery (ND) message
suppression.
ND suppression is a technique that
is used to reduce the amount of ND
packets flooding within individual
segments, that is between hosts
connected to the same logical
switch.";
}
leaf ip-mobility-threshold {
type uint16;
description
"It is possible for a given host (as
defined by its IP address) to move
from one ES to another.
IP mobility threshold specifies the
number of IP mobility events
that are detected for a given IP
address within the
detection-threshold before it
is identified as a duplicate IP
address.
Once the detection threshold is
reached, updates for the IP address
are suppressed.";
}
leaf duplicate-ip-detection-interval {
type uint16;
units "seconds";
description
"The time interval used in detecting a
duplicate IP address. Duplicate IP
address detection number of host moves
are allowed within this interval
period.";
}
}
leaf underlay-multicast {
type boolean;
default "false";
description
"Enables (when set to 'true') or disables
(when set to 'false') underlay
multicast.";
}
leaf flood-unknown-unicast-supression {
type boolean;
default "false";
description
"Enables (when set to 'true') or disables
(when set to 'false') unknown flood
unicast suppression.";
}
leaf vpws-vlan-aware {
type boolean;
default "false";
description
"Enables (when set to 'true') or disables
(when set to 'false') VPWS VLAN-aware.";
}
container bum-management {
description
"Broadcast-unknown-unicast-multicast
management.";
leaf discard-broadcast {
type boolean;
default "false";
description
"Discards broadcast, when enabled.";
}
leaf discard-unknown-multicast {
type boolean;
default "false";
description
"Discards unknown multicast, when
enabled.";
}
leaf discard-unknown-unicast {
type boolean;
default "false";
description
"Discards unknown unicast, when
enabled.";
}
}
container pbb {
when "derived-from-or-self("
+ "../../evpn-type, 'pbb-evpn')" {
description
"Only applies for PBB EVPN.";
}
description
"PBB parameters container.";
reference
"IEEE 802.1ah: Provider Backbone Bridge";
leaf backbone-src-mac {
type yang:mac-address;
description
"Includes provider backbone MAC (B-MAC)
address.";
reference
"RFC 7623: Provider Backbone Bridging
Combined with Ethernet VPN
(PBB-EVPN), Section 8.1";
}
}
}
}
}
}
container ldp-or-l2tp {
description
"Container for LDP or L2TP-signaled PWs
choice.";
leaf agi {
type rt-types:route-distinguisher;
description
"Attachment Group Identifier. Also, called
VPLS-Id.";
reference
"RFC 4667: Layer 2 Virtual Private Network
(L2VPN) Extensions for Layer 2
Tunneling Protocol (L2TP),
Section 4.3
RFC 4762: Virtual Private LAN Service (VPLS)
Using Label Distribution Protocol
(LDP) Signaling, Section 6.1.1";
}
leaf saii {
type uint32;
description
"Source Attachment Individual Identifier
(SAII).";
reference
"RFC 4667: Layer 2 Virtual Private Network
(L2VPN) Extensions for Layer 2
Tunneling Protocol (L2TP),
Section 3";
}
list remote-targets {
key "taii";
description
"List of allowed target Attachment Individual
Identifier (AII) and peers.";
reference
"RFC 4667: Layer 2 Virtual Private Network
(L2VPN) Extensions for Layer 2
Tunneling Protocol (L2TP),
Section 5";
leaf taii {
type uint32;
description
"Target Attachment Individual Identifier.";
reference
"RFC 4667: Layer 2 Virtual Private Network
(L2VPN) Extensions for Layer 2
Tunneling Protocol (L2TP),
Section 3";
}
leaf peer-addr {
type inet:ip-address;
description
"Indicates the peer forwarder's IP address.";
}
}
choice ldp-or-l2tp {
description
"Choice of LDP or L2TP-signaled PWs.";
case ldp {
description
"Container for T-LDP PW configurations.";
leaf t-ldp-pw-type {
type identityref {
base t-ldp-pw-type;
}
description
"T-LDP PW type.";
}
leaf pw-type {
type identityref {
base ldp-pw-type;
}
description
"PW encapsulation type.";
reference
"RFC 4762: Virtual Private LAN Service
(VPLS) Using Label Distribution
Protocol (LDP) Signaling,
Section 6.1.1";
}
leaf pw-description {
type string;
description
"Includes a human-readable description
of the interface. This may be used when
communicating with a remote peer.";
reference
"RFC 4762: Virtual Private LAN Service
(VPLS) Using Label Distribution
Protocol (LDP) Signaling,
Section 6.1.1";
}
leaf mac-addr-withdraw {
type boolean;
description
"If set to 'true', then MAC address
withdrawal is enabled. If 'false',
then MAC address withdrawal is
disabled.";
reference
"RFC 4762: Virtual Private LAN Service
(VPLS) Using Label Distribution
Protocol (LDP) Signaling,
Section 6.2";
}
list pw-peer-list {
key "peer-addr vc-id";
description
"List of AC and PW bindings.";
leaf peer-addr {
type inet:ip-address;
description
"Indicates the peer's IP address.";
}
leaf vc-id {
type string;
description
"VC label used to identify a PW.";
}
leaf pw-priority {
type uint32;
description
"Defines the priority for the PW.
The higher the pw-priority value, the
higher the preference of the PW will
be.";
}
}
container qinq {
when "derived-from-or-self("
+ "../t-ldp-pw-type, 'hvpls')" {
description
"Only applies when t-ldp pw type
is h-vpls.";
}
description
"Container for QinQ.";
leaf s-tag {
type dot1q-types:vlanid;
mandatory true;
description
"S-TAG.";
}
leaf c-tag {
type dot1q-types:vlanid;
mandatory true;
description
"C-TAG.";
}
}
}
case l2tp {
description
"Container for L2TP PWs.";
leaf router-id {
type rt-types:router-id;
description
"A 32-bit number in the dotted-quad format
that is used to uniquely identify a node
within a service provider network.";
reference
"RFC 4667: Layer 2 Virtual Private Network
(L2VPN) Extensions for Layer 2
Tunneling Protocol (L2TP),
Section 4.2";
}
leaf pseudowire-type {
type identityref {
base iana-pw-types:iana-pw-types;
}
description
"Encapsulation type.";
reference
"RFC 4667: Layer 2 Virtual Private Network
(L2VPN) Extensions for Layer 2
Tunneling Protocol (L2TP),
Section 4.2";
}
}
}
}
}
}
container vpn-network-accesses {
description
"Main container for VPN network accesses.";
list vpn-network-access {
key "id";
description
"List of VPN network accesses.";
leaf id {
type vpn-common:vpn-id;
description
"Identifier of the network access";
}
leaf description {
type string;
description
"A textual description of the VPN network
access.";
}
leaf interface-id {
type string;
description
"Refers to a physical or logical interface.";
}
leaf active-vpn-node-profile {
type leafref {
path "../../.."
+ "/active-global-parameters-profiles"
+ "/global-parameters-profile/profile-id";
}
description
"An identifier of an active VPN instance
profile.";
}
uses vpn-common:service-status;
container connection {
description
"Container for the bearer and AC.";
leaf l2-termination-point {
type string;
description
"Specifies a reference to a local Layer 2
termination point such as a Layer 2
sub-interface.";
}
leaf local-bridge-reference {
type string;
description
"Specifies a local bridge reference to
accommodate, for example, implementations
that require internal bridging.
A reference may be a local bridge domain.";
}
leaf bearer-reference {
if-feature "vpn-common:bearer-reference";
type string;
description
"This is an internal reference for the service
provider to identify the bearer associated
with this VPN.";
}
container encapsulation {
description
"Container for Layer 2 encapsulation.";
leaf encap-type {
type identityref {
base vpn-common:encapsulation-type;
}
default "vpn-common:priority-tagged";
description
"Tagged interface type. By default, the
type of the tagged interface is
'priority-tagged'.";
}
container dot1q {
when "derived-from-or-self(../encap-type, "
+ "'vpn-common:dot1q')" {
description
"Only applies when the type of the
tagged interface is 'dot1q'.";
}
description
"Tagged interface.";
leaf tag-type {
type identityref {
base vpn-common:tag-type;
}
default "vpn-common:c-vlan";
description
"Tag type. By default, the tag type is
'c-vlan'.";
}
leaf cvlan-id {
type dot1q-types:vlanid;
description
"VLAN identifier.";
}
container tag-operations {
description
"Sets the tag manipulation policy for this
VPN network access. It defines a set of
tag manipulations that allow for the
insertion, removal, or rewriting
of 802.1Q VLAN tags. These operations are
indicated for the CE-PE direction.
By default, tag operations are symmetric.
As such, the reverse tag operation is
assumed on the PE-CE direction.";
choice op-choice {
description
"Selects the tag rewriting policy for a
VPN network access.";
leaf pop {
type empty;
description
"Pop the outer tag.";
}
leaf push {
type empty;
description
"Push one or two tags defined by the
tag-1 and tag-2 leaves. It is
assumed that, absent any policy, the
default value of 0 will be used for
PCP setting.";
}
leaf translate {
type empty;
description
"Translate the outer tag to one or two
tags. PCP bits are preserved.";
}
}
leaf tag-1 {
when 'not(../pop)';
type dot1q-types:vlanid;
description
"A first tag to be used for push or
translate operations. This tag will be
used as the outermost tag as a result
of the tag operation.";
}
leaf tag-1-type {
type dot1q-types:dot1q-tag-type;
default "dot1q-types:s-vlan";
description
"Specifies a specific 802.1Q tag type
of tag-1.";
}
leaf tag-2 {
when '(../translate)';
type dot1q-types:vlanid;
description
"A second tag to be used for
translation.";
}
leaf tag-2-type {
type dot1q-types:dot1q-tag-type;
default "dot1q-types:c-vlan";
description
"Specifies a specific 802.1Q tag type
of tag-2.";
}
}
}
container priority-tagged {
when "derived-from-or-self(../encap-type, "
+ "'vpn-common:priority-tagged')" {
description
"Only applies when the type of the
tagged interface is 'priority-tagged'.";
}
description
"Priority tagged container.";
leaf tag-type {
type identityref {
base vpn-common:tag-type;
}
default "vpn-common:c-vlan";
description
"Tag type. By default, the tag type is
'c-vlan'.";
}
}
container qinq {
when "derived-from-or-self(../encap-type, "
+ "'vpn-common:qinq')" {
description
"Only applies when the type of the tagged
interface is QinQ.";
}
description
"Includes QinQ parameters.";
leaf tag-type {
type identityref {
base vpn-common:tag-type;
}
default "vpn-common:s-c-vlan";
description
"Tag type. By default, the tag type is
's-c-vlan'.";
}
leaf svlan-id {
type dot1q-types:vlanid;
mandatory true;
description
"S-VLAN identifier.";
}
leaf cvlan-id {
type dot1q-types:vlanid;
mandatory true;
description
"C-VLAN identifier.";
}
container tag-operations {
description
"Sets the tag manipulation policy for this
VPN network access. It defines a set of
tag manipulations that allow for the
insertion, removal, or rewriting
of 802.1Q VLAN tags. These operations are
indicated for the CE-PE direction.
By default, tag operations are symmetric.
As such, the reverse tag operation is
assumed on the PE-CE direction.";
choice op-choice {
description
"Selects the tag rewriting policy for a
VPN network access.";
leaf pop {
type uint8 {
range "1|2";
}
description
"Pop one or two tags as a function
of the indicated pop value.";
}
leaf push {
type empty;
description
"Push one or two tags defined by the
tag-1 and tag-2 leaves. It is
assumed that, absent any policy, the
default value of 0 will be used for
PCP setting.";
}
leaf translate {
type uint8 {
range "1|2";
}
description
"Translate one or two outer tags. PCP
bits are preserved.
The following operations are
supported:
- translate 1 with tag-1 leaf is
provided: only the outermost tag is
translated to the value in tag-1.
- translate 2 with both tag-1 and
tag-2 leaves are provided: both
outer and inner tags are translated
to the values in tag-1 and tag-2,
respectively.
- translate 2 with tag-1 leaf is
provided: the outer tag is popped
while the inner tag is translated
to the value in tag-1.";
}
}
leaf tag-1 {
when 'not(../pop)';
type dot1q-types:vlanid;
description
"A first tag to be used for push or
translate operations. This tag will be
used as the outermost tag as a result
of the tag operation.";
}
leaf tag-1-type {
type dot1q-types:dot1q-tag-type;
default "dot1q-types:s-vlan";
description
"Specifies a specific 802.1Q tag type
of tag-1.";
}
leaf tag-2 {
when 'not(../pop)';
type dot1q-types:vlanid;
description
"A second tag to be used for push or
translate operations.";
}
leaf tag-2-type {
type dot1q-types:dot1q-tag-type;
default "dot1q-types:c-vlan";
description
"Specifies a specific 802.1Q tag type
of tag-2.";
}
}
}
}
container lag-interface {
if-feature "vpn-common:lag-interface";
description
"Container of LAG interface attributes
configuration.";
leaf lag-interface-id {
type string;
description
"LAG interface identifier.";
}
container lacp {
description
"Container for LACP.";
leaf lacp-state {
type boolean;
default "false";
description
"Controls whether LACP is enabled.";
}
leaf mode {
type identityref {
base lacp-mode;
}
description
"Indicates the LACP mode.";
}
leaf speed {
type uint32;
units "mbps";
default "10";
description
"LACP speed. This low default value
is inherited from the L2SM.";
}
leaf mini-link-num {
type uint32;
description
"Defines the minimum number of links that
must be active before the aggregating
link is put into service.";
}
leaf system-id {
type yang:mac-address;
description
"Indicates the System ID used by LACP.";
}
leaf admin-key {
type uint16;
description
"Indicates the value of the key used for
the aggregate interface.";
}
leaf system-priority {
type uint16 {
range "0..65535";
}
default "32768";
description
"Indicates the LACP priority for the
system.";
}
container member-link-list {
description
"Container of Member link list.";
list member-link {
key "name";
description
"Member link.";
leaf name {
type string;
description
"Member link name.";
}
leaf speed {
type uint32;
units "mbps";
default "10";
description
"Port speed.";
}
leaf mode {
type identityref {
base vpn-common:neg-mode;
}
description
"Negotiation mode.";
}
leaf link-mtu {
type uint32;
units "bytes";
description
"Link MTU size.";
}
container oam-802.3ah-link {
if-feature "oam-3ah";
description
"Container for oam 802.3ah link.";
leaf enable {
type boolean;
default "false";
description
"Indicates support of OAM 802.3ah
link.";
}
}
}
}
leaf flow-control {
type boolean;
default "false";
description
"Indicates whether flow control is
supported.";
}
leaf lldp {
type boolean;
default "false";
description
"Indicates whether Link Layer Discovery
Protocol (LLDP) is supported.";
}
}
container split-horizon {
description
"Configuration with split horizon enabled.";
leaf group-name {
type string;
description
"Group name of the Split Horizon.";
}
}
}
}
choice signaling-option {
description
"Choice for the signaling-option.";
case bgp {
description
"BGP is used as the signaling protocol.";
choice bgp-type {
description
"Choice for the BGP type.";
case l2vpn-bgp {
description
"Container for BGP L2VPN.";
leaf ce-id {
type uint16;
description
"Identifies the CE within the VPN.";
reference
"RFC 6624: Layer 2 Virtual Private
Networks Using BGP for
Auto-Discovery and
Signaling";
}
leaf remote-ce-id {
type uint16;
description
"Indicates the identifier of the remote
CE.";
}
container vpls-instance {
when "derived-from-or-self(../../../../../"
+ "vpn-type, 'vpn-common:vpls')" {
description
"Only applies for VPLS.";
}
description
"VPLS instance.";
leaf vpls-edge-id {
type uint16;
description
"VPLS Edge Identifier (VE ID).";
reference
"RFC 4761: Virtual Private LAN Service
(VPLS) Using BGP for Auto-
Discovery and Signaling,
Section 3.2.1";
}
}
}
case evpn-bgp {
description
"Used for EVPN.";
leaf df-preference {
type uint16;
default "32767";
description
"Defines a 2-octet value that indicates
the PE preference to become the DF in
the ES.
The preference value is only applicable
to the preference based method.";
reference
"RFC 8584: Framework for Ethernet VPN
Designated Forwarder Election
Extensibility";
}
container vpws-service-instance {
when "derived-from-or-self(../../../../../"
+ "vpn-type, 'vpn-common:vpws-evpn')" {
description
"Only applies for EVPN-VPWS.";
}
description
"Local and remote VPWS Service Instance
(VSI)";
reference
"RFC 8214: Virtual Private Wire Service
Support in Ethernet VPN";
choice local-vsi-choice {
description
"Choices for assigning local VSI.";
case directly-assigned {
description
"Explicitly assign a local VSI.";
leaf local-vpws-service-instance {
type uint32 {
range "1..16777215";
}
description
"Indicates the assigned local
VSI.";
}
}
case auto-assigned {
description
"The local VSI is auto-assigned.";
container local-vsi-auto {
description
"The local VSI is auto-assigned.";
choice auto-mode {
description
"Indicates the auto-assignment
mode of local VSI. VSI can be
automatically assigned either
with or without indicating a
pool from which the VSI
should be taken.
For both cases, the server
will auto-assign a local VSI
value and use that value.";
case from-pool {
leaf vsi-pool-name {
type string;
description
"The auto-assignment will be
made from this pool.";
}
}
case full-auto {
leaf auto {
type empty;
description
"Indicates that a local VSI
is fully auto-assigned.";
}
}
}
leaf auto-local-vsi {
type uint32 {
range "1..16777215";
}
config false;
description
"The value of the auto-assigned
local VSI.";
}
}
}
}
choice remote-vsi-choice {
description
"Choice for assigning the remote VSI.";
case directly-assigned {
description
"Explicitly assign a remote VSI.";
leaf remote-vpws-service-instance {
type uint32 {
range "1..16777215";
}
description
"Indicates the value of the remote
VSI.";
}
}
case auto-assigned {
description
"The remote VSI is auto-assigned.";
container remote-vsi-auto {
description
"The remote VSI is auto-assigned.";
choice auto-mode {
description
"Indicates the auto-assignment
mode of remote VSI. VSI can be
automatically assigned either
with or without indicating a
pool from which the VSI
should be taken.
For both cases, the server
will auto-assign a remote VSI
value and use that value.";
case from-pool {
leaf vsi-pool-name {
type string;
description
"The auto-assignment will be
made from this pool.";
}
}
case full-auto {
leaf auto {
type empty;
description
"Indicates that a remote VSI
is fully auto-assigned.";
}
}
}
leaf auto-remote-vsi {
type uint32 {
range "1..16777215";
}
config false;
description
"The value of the auto-assigned
remote VSI.";
}
}
}
}
}
}
}
}
}
list group {
key "group-id";
description
"List of group-ids.";
leaf group-id {
type string;
description
"Indicates the group-id to which the network
access belongs to.";
}
leaf precedence {
type identityref {
base precedence-type;
}
description
"Defining service redundancy in transport
network.";
}
leaf ethernet-segment-identifier {
type l2vpn-es:es-ref;
description
"Reference to the ESI associated with the VPN
network access.";
}
}
container ethernet-service-oam {
description
"Container for Ethernet service OAM.";
leaf md-name {
type string;
description
"Maintenance domain name.";
}
leaf md-level {
type uint8;
description
"Maintenance domain level.";
}
container cfm-802.1-ag {
description
"Container of 802.1ag CFM configurations.";
list n2-uni-c {
key "maid";
description
"List of UNI-N to UNI-C.";
uses cfm-802;
}
list n2-uni-n {
key "maid";
description
"List of UNI-N to UNI-N.";
uses cfm-802;
}
}
uses y-1731;
}
container service {
description
"Container for service";
leaf mtu {
type uint32;
units "bytes";
description
"Layer 2 MTU, it is also known as the maximum
transmission unit or maximum frame size.";
}
container svc-pe-to-ce-bandwidth {
if-feature "vpn-common:inbound-bw";
description
"From the customer site's perspective, the
service inbound bandwidth of the connection
or download bandwidth from the service
provider the site. Note that the L2SM uses
'input-bandwidth' to refer to the same
concept.";
list pe-to-ce-bandwidth {
key "bw-type";
description
"List for PE-to-CE bandwidth data nodes.";
leaf bw-type {
type identityref {
base vpn-common:bw-type;
}
description
"Indicates the bandwidth type.";
}
choice type {
description
"Choice based upon bandwidth type.";
case per-cos {
description
"Bandwidth per CoS.";
list cos {
key "cos-id";
description
"List of class of services.";
leaf cos-id {
type uint8;
description
"Identifier of the CoS, indicated by
DSCP or a CE-CLAN CoS (802.1p) value
in the service frame.";
reference
"IEEE Std 802.1Q: Bridges and Bridged
Networks";
}
uses bandwidth-parameters;
}
}
case other {
description
"Other bandwidth types.";
uses bandwidth-parameters;
}
}
}
}
container svc-ce-to-pe-bandwidth {
if-feature "vpn-common:outbound-bw";
description
"From the customer site's perspective,
the service outbound bandwidth of the
connection or upload bandwidth from
the CE to the PE. Note that the L2SM uses
'output-bandwidth' to refer to the same
concept.";
list ce-to-pe-bandwidth {
key "bw-type";
description
"List for CE-to-PE bandwidth.";
leaf bw-type {
type identityref {
base vpn-common:bw-type;
}
description
"Indicates the bandwidth type.";
}
choice type {
description
"Choice based upon bandwidth type.";
case per-cos {
description
"Bandwidth per CoS.";
list cos {
key "cos-id";
description
"List of class of services.";
leaf cos-id {
type uint8;
description
"Identifier of the CoS, indicated by
DSCP or a CE-CLAN CoS (802.1p) value
in the service frame.";
reference
"IEEE Std 802.1Q: Bridges and Bridged
Networks";
}
uses bandwidth-parameters;
}
}
case other {
description
"Other non CoS-aware bandwidth types.";
uses bandwidth-parameters;
}
}
}
}
container qos {
if-feature "vpn-common:qos";
description
"QoS configuration.";
container qos-classification-policy {
description
"Configuration of the traffic classification
policy.";
list rule {
key "id";
ordered-by user;
description
"List of classification rules.";
leaf id {
type string;
description
"A description identifying the QoS
classification policy rule.";
}
choice match-type {
default "match-flow";
description
"Choice for classification.";
case match-flow {
container match-flow {
description
"Describes flow-matching criteria.";
leaf dscp {
type inet:dscp;
description
"DSCP value.";
}
leaf dot1q {
type uint16;
description
"802.1Q matching. It is a VLAN tag
added into a frame.";
reference
"IEEE Std 802.1Q: Bridges and
Bridged
Networks";
}
leaf pcp {
type uint8 {
range "0..7";
}
description
"Priority Code Point (PCP) value.";
}
leaf src-mac-address {
type yang:mac-address;
description
"Source MAC address.";
}
leaf dst-mac-address {
type yang:mac-address;
description
"Destination MAC address.";
}
leaf color-type {
type identityref {
base color-type;
}
description
"Color type.";
}
leaf any {
type empty;
description
"Allows all.";
}
}
}
case match-application {
leaf match-application {
type identityref {
base vpn-common:customer-application;
}
description
"Defines the application to match.";
}
}
}
leaf target-class-id {
type string;
description
"Identification of the CoS.
This identifier is internal to the
administration.";
}
}
}
container qos-profile {
description
"QoS profile configuration.";
list qos-profile {
key "profile";
description
"QoS profile.
Can be standard profile or customized
profile.";
leaf profile {
type leafref {
path "/l2vpn-ntw/vpn-profiles"
+ "/valid-provider-identifiers"
+ "/qos-profile-identifier/id";
}
description
"QoS profile to be used.";
}
leaf direction {
type identityref {
base vpn-common:qos-profile-direction;
}
default "vpn-common:both";
description
"The direction to which the QoS profile
is applied.";
}
}
}
}
container mac-policies {
description
"Container for MAC-related policies.";
list access-control-list {
key "name";
description
"Container for access control List.";
leaf name {
type string;
description
"Specifies the name of the ACL.";
}
leaf-list src-mac-address {
type yang:mac-address;
description
"Specifies the source MAC address.";
}
leaf-list src-mac-address-mask {
type yang:mac-address;
description
"Specifies the source MAC address mask.";
}
leaf-list dst-mac-address {
type yang:mac-address;
description
"Specifies the destination MAC address.";
}
leaf-list dst-mac-address-mask {
type yang:mac-address;
description
"Specifies the destination MAC address
mask.";
}
leaf action {
type identityref {
base mac-action;
}
default "drop";
description
"Specifies the filtering action.";
}
leaf rate-limit {
when "derived-from-or-self(../action, "
+ "'flood')" {
description
"Rate-limit is valid only when the action
is to accept the matching frame.";
}
type decimal64 {
fraction-digits 2;
}
units "bytes per second";
description
"Specifies how to rate-limit the traffic.";
}
}
container mac-loop-prevention {
description
"Container of MAC loop prevention.";
leaf window {
type uint32;
units "seconds";
default "180";
description
"The timer when a MAC mobility event is
detected.";
}
leaf frequency {
type uint32;
default "5";
description
"The number of times to detect MAC
duplication, where a 'duplicate MAC
address' situation has occurred and
the duplicate MAC address has been
added to a list of duplicate MAC
addresses.";
}
leaf retry-timer {
type uint32;
units "seconds";
description
"The retry timer. When the retry timer
expires, the duplicate MAC address will
be flushed from the MAC-VRF.";
}
leaf protection-type {
type identityref {
base loop-prevention-type;
}
default "trap";
description
"Protection type";
}
}
container mac-addr-limit {
description
"Container of MAC-Addr limit configurations";
leaf limit-number {
type uint16;
default "2";
description
"Maximum number of MAC addresses learned
from the subscriber for a single service
instance.";
}
leaf time-interval {
type uint32;
units "milliseconds";
default "300";
description
"The aging time of the mac address.";
}
leaf action {
type identityref {
base mac-action;
}
default "warning";
description
"Specifies the action when the upper limit
is exceeded: drop the packet, flood the
packet, or log a warning message (without
dropping the packet).";
}
}
}
container broadcast-unknown-unicast-multicast {
description
"Container of broadcast, unknown unicast, and
multicast configurations";
leaf multicast-site-type {
type enumeration {
enum receiver-only {
description
"The site only has receivers.";
}
enum source-only {
description
"The site only has sources.";
}
enum source-receiver {
description
"The site has both sources and
receivers.";
}
}
default "source-receiver";
description
"Type of the multicast site.";
}
list multicast-gp-address-mapping {
key "id";
description
"List of Port to group mappings.";
leaf id {
type uint16;
description
"Unique identifier for the mapping.";
}
leaf vlan-id {
type uint32;
mandatory true;
description
"The VLAN ID of the multicast group.";
}
leaf mac-gp-address {
type yang:mac-address;
mandatory true;
description
"The MAC address of the multicast group.";
}
leaf port-lag-number {
type uint32;
description
"The port/LAG belonging to the multicast
group.";
}
}
leaf bum-overall-rate {
type uint64;
units "bps";
description
"Overall rate for BUM.";
}
}
}
}
}
}
}
}
}
}
}