EVPN configuration.
Version: 2021-08-12
module huawei-evpn { yang-version 1; namespace "urn:huawei:yang:huawei-evpn"; prefix evpn; import huawei-acl { prefix acl; } import huawei-network-instance { prefix ni; } import huawei-l3vpn { prefix l3vpn; } import huawei-bd { prefix bd; } import huawei-ifm { prefix ifm; } import huawei-pub-type { prefix pub-type; } import huawei-routing-policy { prefix rtp; } import ietf-inet-types { prefix inet; } import huawei-extension { prefix ext; } import huawei-evpl { prefix evpl; } import huawei-bfd { prefix bfd; } import huawei-bgp { prefix bgp; } import huawei-tunnel-management { prefix tnlm; } import huawei-l2vpn { prefix l2vpn; } import huawei-nvo3 { prefix nvo3; } import ietf-yang-types { prefix yang; } include huawei-evpn-type; organization "Huawei Technologies Co., Ltd."; contact "Huawei Industrial Base Bantian, Longgang Shenzhen 518129 People's Republic of China Website: http://www.huawei.com Email: support@huawei.com"; description "EVPN configuration."; revision "2021-08-12" { description "Add leaf nexthop-priority in container vpws-evpn."; reference "Huawei private."; } revision "2020-05-04" { description "Add container evpl-peer-info, add leaf local-ctrl-word in container evpl-info."; reference "Huawei private."; } revision "2020-04-20" { description "Add node tunnel-policy-name, modify descriptions of YANG module."; reference "Huawei private."; } revision "2019-03-22" { description "Initial revision."; reference "Huawei private."; } ext:task-name "evpnbgp"; container evpn { description "Configure of EVPN."; container base-process { description "Configure of EVPN base process."; leaf redundancy-mode { type redundancy-mode; default "all-active"; description "Redundancy mode."; } leaf source-address { ext:operation-exclude "update"; type inet:ipv4-address-no-zone; description "Source address."; } leaf evpn-overlay { type boolean; must "(../evpn-overlay!='true' and not(../../instances/instance)) or ../evpn-overlay='true'"; default "false"; description "Enable/disable EVPN overlay."; } } // container base-process container site { presence "evpn view"; description "Enable/disable global EVPN configuration."; leaf df-election-mode { type df-election-mode; default "per-interface"; description "Global configuration DF election mode."; } leaf vpws-df-election-mode { type vpws-df-election-mode; default "per-interface"; description "VPWS DF select mode."; } leaf ac-influnced-enable { type boolean; default "false"; description "Enable/disable AC state influenced DF mode."; } leaf ad-per-es-split { type ad-per-es-route-divmode; default "dont-divide-rt"; description "EVPN AD per ES route split."; } leaf irb-reoriginated { type boolean; default "false"; description "Enable/disable IRB reoriginated without bridge domain."; } leaf vlan-extend-private-enable { type boolean; default "false"; description "Enable/disable VLAN extend extcommunity to carry VLAN in MAC routes."; } leaf vlan-extend-redirect-enable { type boolean; default "false"; description "Enable/disable VLAN extend extcommunity to redirect to the same ESI interface."; } leaf local-remote-frr-enable { type boolean; default "false"; description "Enable/disable local MAC and remote MAC to form FRR."; } leaf bypass-vxlan-enable { type boolean; default "false"; description "Enable/disable bypass VXLAN extcommunity, use for allow all-active device to form bypass VXLAN."; } leaf alm-threshold { type uint32 { range "1..4294967295"; } description "Specify the alarm route threshold."; } leaf recovery-percentage { when "../alm-threshold"; type uint32 { range "1..95"; } units "%"; default "80"; description "Specify the alarm route recovery percentage."; } leaf local-remote-vpws-frr-enable { type boolean; default "false"; description "Enable/disable the local and remote FRR for EVPN VPWS."; } leaf remote-vpws-frr-enable { type boolean; default "false"; description "Enable/disable the remote FRR for EVPN VPWS."; } leaf irb-split-group { type boolean; default "true"; description "Enable/disable IRB advertise under split group."; } leaf compatible { type boolean; default "false"; description "Enable/disable IRB routing rebirth into ARP routing and prefix routing."; } leaf advertising-vxlan-tunnel-mac { type boolean; default "false"; description "Enable/disable advertising MAC routes learned by VXLAN tunnel."; } leaf advertise-suppressed-route { type boolean; default "false"; description "Enable/disable advertising suppressed detail route."; } leaf routerid-extend-private-enable { type boolean; default "false"; description "Enable/disable router ID extend extcommunity for carrying router ID in EVPN routes."; } leaf mac-duplication-enable { type boolean; default "true"; description "Enable/disable mac-duplication."; } leaf nexthop-recursive-lookup-restrain { type boolean; default "true"; description "Enable/disable EVPN nexthop recursive lookup restrain."; } leaf adv-dci-local-rt-to-mpls { type boolean; default "false"; description "Enable/disable advertising DCI local route to MPLS peer."; } container mac-duplication { description "Configure MAC duplication."; leaf period { type uint8 { range "3..10"; } default "5"; description "Number of times that MAC duplication is detected in a period."; } leaf cycle { type uint16 { range "60..900"; } units "s"; must "../cycle mod 10 = 0"; default "180"; description "Interval at which MAC duplication is detected."; } leaf recycle { type uint16 { range "120..3600"; } units "s"; must "../recycle mod 10 = 0"; default "540"; description "Period after which suppression on MAC duplication is removed."; } } // container mac-duplication container static-esis { description "List of static ESI."; list static-esi { key "esi"; description "Configure instance of static ESI."; leaf esi { type esi; description "Static ESI, in the format of 00xx.xxxx.xxxx.xxxx.xxxx, in which x ranges from 0 to F. A static ESI cannot be all 0s."; } leaf redundancy-mode { type esi-redundancy-mode; default "none"; description "Redundancy mode."; } leaf df-election-type { type df-election-type; default "default"; description "The DF election type of ESI."; } leaf preference { when "../df-election-type='preference-based'"; type uint16 { range "0..65535"; } default "32767"; description "The preference of ESI."; } leaf non-revertive { when "../df-election-type='preference-based'"; type boolean; default "false"; description "Enable/disable non-revertive mode."; } leaf df-election { when "../redundancy-mode='single-active'"; type boolean; must "(current()='true' and (not(/ifm:ifm/ifm:interfaces/ifm:interface[evpn:evpn/evpn:esi=current()/../esi]/ifm:type) or (/ifm:ifm/ifm:interfaces/ifm:interface[evpn:evpn/evpn:esi=current()/../esi]/ifm:type!='Virtual-Ethernet'))) or current()='false'"; default "false"; description "Enable/disable DF election mode."; } } // list static-esi } // container static-esis container dynamic-esis { description "List of dynamic ESI."; list dynamic-esi { key "esi-name"; description "Configure instance of dynamic ESI."; leaf esi-name { type string { length "1..31"; } description "Dynamic ESI name is a string of 1 to 31 characters, which begins with a-z or A-Z."; } leaf redundancy-mode { type esi-redundancy-mode; default "none"; description "Redundancy mode."; } leaf df-election-type { type df-election-type; default "default"; description "The DF election type of ESI."; } leaf preference { when "../df-election-type='preference-based'"; type uint16 { range "0..65535"; } default "32767"; description "The preference of ESI."; } leaf non-revertive { when "../df-election-type='preference-based'"; type boolean; default "false"; description "Enable/disable non-revertive mode."; } } // list dynamic-esi } // container dynamic-esis } // container site container instances { description "List of EVPN instance."; list instance { key "name"; unique "normal-evpn/rd"; unique "b-evpn/rd"; unique "bd-evpn/rd"; unique "vpws-evpn/rd"; description "Configure EVPN instance."; leaf name { type name-type { length "1..31"; } must "../name!='_public_'"; description "EVPN instance name."; } leaf type { ext:operation-exclude "update|delete"; type evpn-type; default "normal"; description "The value specifies the type of EVPN instance."; } leaf label-policy { type evpn-apply-label-mode; config false; description "Label policy of the EVPN instance."; } container normal-evpn { when "../type = 'normal'"; description "Configure normal mode of EVPN instance."; leaf description { type string { length "1..63"; pattern '([^?]*)'; } description "The description for EVPN instance."; } leaf rd { ext:operation-exclude "update"; type string { length "3..21"; } description "An EVPN instance address family takes effect only after it is configured with an RD. The RD can be in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 101:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0.0:0."; } leaf tunnel-policy-name { when "../rd"; type leafref { path "/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy/tnlm:name"; } must "not(/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type) and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='gre']"; description "Tunnel policy name."; } leaf import-policy-name { when "../rd"; type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "The name of specify import route policy."; } leaf export-policy-name { when "../rd"; type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "The name of specify export route policy."; } leaf local-remote-frr { type local-remote-frr-enable-type; default "default"; description "Enable/disable local MAC and remote MAC to form FRR."; } leaf mac-balance-enable { type boolean; default "false"; description "Enable/disable MAC balance."; } leaf isolate-spoken { type isolate-spoken-type; default "default"; description "Forwarding isolation between AC interfaces under EVPN."; } leaf export-acl-name-or-id { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } description "Name or number of an IPv4 ACL used by a filtering policy to filter the routes to be advertised to a specified peer. The number ranges from 4000 to 4999, and the name must start with a letter."; } leaf import-acl-name-or-id { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } description "Name or number of an IPv4 ACL used by a filtering policy to filter the routes received from a specified peer. The number ranges from 4000 to 4999, and the name must start with a letter. By default, no ACL-based filtering policy is configured, and therefore all EVN BGP routes can be accepted."; } leaf etree-enable { type boolean; default "false"; description "Enable/disable EVPN E-Tree."; } leaf control-word { type boolean; default "false"; description "Enable/disable EVPN control word."; } leaf nexthop-recursive-lookup-restrain { type boolean; default "true"; description "Enable/disable EVPN nexthop recursive lookup restrain."; } container rts { when "../rd"; description "List of RTs."; list rt { key "vrf-rt-type vrf-rt-value"; description "Configure RTs to control route advertisement between network nodes. Before sending a VPN route to a PE, the local PE adds an Export RT to the route. After receiving a route from another PE, the local PE compares the local Import RT and the Export RT carried in the VPN route and adds the route to the VPN instance only when the two RTs are the same."; leaf vrf-rt-type { type vrf-rt-type; description "RT type (export-extcommunity or import-extcommunity) export-extcommunity: Specifies the value of the extended community attribute of the route from an outbound interface to the destination VPN. import-extcommunity: Specifies the value of the extended community attribute. Routes with such an extended community value can be accepted."; } leaf vrf-rt-value { type string { length "3..21"; } description "RT value, in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 1:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0.0:0."; } } // list rt } // container rts container mac-duplication { presence "normal MAC duplication"; description "Enable/disable MAC duplication."; leaf period { type uint8 { range "3..10"; } must "(../period and ../cycle) or (not(../period) and not(../cycle))"; description "Number of times that MAC duplication is detected in a period."; } leaf cycle { type uint16 { range "60..900"; } units "s"; must "(../cycle mod 10 = 0) and ((../period and ../cycle) or (not(../period) and not(../cycle)))"; description "Interval at which MAC duplication is detected. The value must be a multiple of 10."; } leaf recycle { type uint16 { range "120..3600"; } units "s"; must "../recycle mod 10 = 0"; description "Period after which suppression on MAC duplication is removed. The value must be a multiple of 10."; } leaf blackhole { type boolean; default "false"; description "Enable/disable a blackhole flag."; } } // container mac-duplication container mac-duplication-infos { config false; description "Operational state of information aggregation about MAC addresses that are duplicate in an EVPN instance."; list mac-duplication-info { key "mac-address bd-id"; description "Operational state of information about MAC addresses that are duplicate in an EVPN instance."; leaf mac-address { type pub-type:mac-address; description "MAC address."; } leaf bd-id { type uint32 { range "1..16777215"; } description "Bridge domain ID."; } leaf bd-tag { type uint32 { range "1..4094"; } description "Bridge domain label."; } leaf dampened-times { type uint8; description "Number of times that MAC duplication occurs."; } leaf suppress-flag { type boolean; description "Flag indicating whether MAC duplication is suppressed."; } leaf last-source { type string { length "1..100"; } description "Source port."; } leaf peer-ip { type inet:ipv4-address-no-zone; description "Peer IP address of a PW."; } leaf vc-id { type uint32 { range "1..4294967295"; } description "PW ID used to uniquely identify a VC."; } leaf vc-type { type l2vpn-encapsulate-type; description "Encapsulation type of a PW."; } leaf suppress-time { type yang:date-and-time; description "Date and time when MAC duplication was suppressed."; } } // list mac-duplication-info } // container mac-duplication-infos container pipe { description "Configure the diffserv mode of evpn."; leaf split-mode { type boolean; must "((../split-mode='false' and not(../ingress-pipe-mode) and not(../egress-pipe-mode) and ../pipe-mode) or (../split-mode='true' and not(../pipe-mode) and ../ingress-pipe-mode and ../egress-pipe-mode and not(../ingress-pipe-mode='uniform' and ../egress-pipe-mode='uniform')))"; default "false"; description "Enable/disable split mode."; } leaf pipe-mode { when "../split-mode='false'"; type evpn-pipe-mode; must "(../split-mode='false') and ((../pipe-mode='pipe' and (../service-class) and (../color)) or (../pipe-mode='shortpipe' and (../service-class) and (../color) and (../domain-name)) or (../pipe-mode='uniform'))"; default "uniform"; description "Specify the pipe mode."; } leaf ingress-pipe-mode { when "../split-mode='true'"; type evpn-pipe-mode; must "((../split-mode='true') and (((../service-class) and (../color) and (../ingress-pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe')) or (../ingress-pipe-mode='uniform' and ../egress-pipe-mode!='uniform')))"; default "uniform"; description "Specify the ingress pipe mode."; } leaf egress-pipe-mode { when "../split-mode='true'"; type evpn-pipe-mode; must "((../split-mode='true') and (((../domain-name) and (../trust-type) and (../egress-pipe-mode='shortpipe')) or (../egress-pipe-mode='pipe') or (../egress-pipe-mode='uniform' and ../ingress-pipe-mode!='uniform')))"; default "uniform"; description "Specify the egress pipe mode."; } leaf service-class { when "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; type evpn-service-class; must "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; default "be"; description "Specify the CoS."; } leaf color { when "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; type evpn-color; must "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; default "green"; description "Specify the color of packets."; } leaf domain-name { when "(../pipe-mode='shortpipe' or ../egress-pipe-mode='shortpipe')"; type leafref { path "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name"; } must "(../pipe-mode='shortpipe' or ../egress-pipe-mode='shortpipe')"; default "default"; description "DS domain name."; } leaf trust-type { when "../egress-pipe-mode='shortpipe'"; type evpn-trust-type; must "../egress-pipe-mode='shortpipe'"; default "outpri"; description "Specify the trust type."; } } // container pipe container reserve-if-switch { description "Configure EVPN broadcast fast switching."; leaf enable { type boolean; default "false"; description "Enable/disable the flag of EVPN broadcast fast switching."; } } // container reserve-if-switch } // container normal-evpn container b-evpn { when "../type = 'b-evpn'"; description "Configure backbone mode of EVPN instance."; leaf description { type string { length "1..63"; pattern '([^?]*)'; } description "The description for EVPN instance."; } leaf rd { ext:operation-exclude "update"; type string { length "3..21"; } description "An EVPN instance address family takes effect only after it is configured with an RD. The RD can be in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 101:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0.0:0."; } leaf bmac { when "../rd"; type pub-type:mac-address { length "0..255"; } description "Backbone bridging source MAC."; } leaf tunnel-policy-name { when "../rd"; type leafref { path "/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy/tnlm:name"; } must "not(/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type) and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='gre'] and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='sr-te-policy'] and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='bgp']"; description "Tunnel policy name."; } leaf nexthop-recursive-lookup-restrain { type boolean; default "true"; description "Enable/disable EVPN nexthop recursive lookup restrain."; } container rts { when "../rd"; description "List of RTs."; list rt { key "vrf-rt-type vrf-rt-value"; description "Configure RTs to control route advertisement between network nodes. Before sending a VPN route to a PE, the local PE adds an Export RT to the route. After receiving a route from another PE, the local PE compares the local Import RT and the Export RT carried in the VPN route and adds the route to the VPN instance only when the two RTs are the same."; leaf vrf-rt-type { type vrf-rt-type; description "RT type (export-extcommunity or import-extcommunity) export-extcommunity: Specifies the value of the extended community attribute of the route from an outbound interface to the destination VPN. import-extcommunity: Specifies the value of the extended community attribute. Routes with such an extended community value can be accepted."; } leaf vrf-rt-value { type string { length "3..21"; } description "RT value, in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 1:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0.0:0."; } } // list rt } // container rts } // container b-evpn container i-evpn { when "../type = 'i-evpn'"; description "Configure PBB EVPN instance."; leaf description { type string { length "1..63"; pattern '([^?]*)'; } description "The description for EVPN instance."; } leaf tag { ext:operation-exclude "update"; type uint32 { range "0..16777215"; } description "Specify an I-SID."; } leaf b-evpn-name { ext:operation-exclude "update"; when "../tag"; type leafref { path "/evpn:evpn/evpn:instances/evpn:instance/evpn:name"; } must "/evpn:evpn/evpn:instances/evpn:instance[evpn:name=current()]/evpn:type='b-evpn'"; description "Binding an I-EVPN instance with a B-EVPN instance."; } leaf bmac { when "../tag"; type pub-type:mac-address { length "0..255"; } description "Backbone bridging source MAC."; } } // container i-evpn container bd-evpn { when "../type = 'bd-evpn'"; description "Configure BD exclusive mode of EVPN instance."; leaf description { type string { length "1..63"; pattern '([^?]*)'; } description "The description for EVPN instance."; } leaf rd { ext:operation-exclude "update"; type string { length "3..21"; } description "An EVPN instance address family takes effect only after it is configured with an RD. The RD can be in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 101:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0.0:0."; } leaf import-policy-name { when "../rd"; type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "The name of specify import route policy."; } leaf export-policy-name { when "../rd"; type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "The name of specify export route policy."; } leaf tunnel-policy-name { when "../rd"; type leafref { path "/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy/tnlm:name"; } must "(not(/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence) or (/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='srv6-te-flow-group'])) and (not(/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence) or (/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='gre']))"; description "Tunnel policy name."; } leaf local-remote-frr { type local-remote-frr-enable-type; default "default"; description "Enable local MAC and remote MAC to form FRR."; } leaf default-color { when "../rd"; type uint32 { range "0..4294967295"; } description "Set default color for nexthop iteration."; } leaf mac-balance-enable { type boolean; default "false"; description "Enable/disable MAC balance."; } leaf export-acl-name-or-id { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } description "Name or number of an IPv4 ACL used by a filtering policy to filter the routes to be advertised to a specified peer. The number ranges from 4000 to 4999, and the name must start with a letter. By default, no ACL-based filtering policy is configured, and therefore all EVN BGP routes can be advertised."; } leaf import-acl-name-or-id { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } description "Name or number of an IPv4 ACL used by a filtering policy to filter the routes received from a specified peer. The number ranges from 4000 to 4999, and the name must start with a letter. By default, no ACL-based filtering policy is configured, and therefore all EVN BGP routes can be accepted."; } leaf bypass-vxlan { type bypass-vxlan-enable-type; default "default"; description "Enable bypass VXLAN capability."; } leaf etree-enable { type boolean; must "(../etree-enable='true' and not(../inclusive-provider-tunnel)) or (../etree-enable='false')"; default "false"; description "Enable/disable EVPN E-Tree."; } leaf srv6-mode { when "../rd"; type srv6-mode; must "../control-word!='true'"; description "SRv6 iteration mode."; } leaf down-switch { when "../rd and ../srv6-mode='te'"; type boolean; default "false"; description "Enable/disable switch TE to BE if the associated TE tunnel goes down."; } leaf control-word { type boolean; must "(../control-word='true' and not(../srv6-mode)) or ../control-word!='true'"; default "false"; description "Enable/disable EVPN control word."; } leaf mac-route-advertise { type mac-route-no-advertise-type; default "enable"; description "Enable/disable local MAC routes from being advertised."; } leaf arp-route-generate-mac { type mac-route-no-advertise-type; default "disable"; description "Enable/disable MAC/IP route to generate MAC."; } leaf mac-only-route-generate { type mac-route-no-advertise-type; default "enable"; description "Enable/disable the function of generating EVPN MAC routes when both MAC address entries and ARP/ND entries contain local MAC addresses."; } leaf mac-frr-keep { type boolean; default "true"; description "Enable/disable the function of keeping MAC to form FRR."; } leaf nexthop-recursive-lookup-restrain { type boolean; default "true"; description "Enable/disable EVPN nexthop recursive lookup restrain."; } container rts { when "../rd"; description "List of RTs."; list rt { key "vrf-rt-type vrf-rt-value"; description "Configure RTs to control route advertisement between network nodes. Before sending a VPN route to a PE, the local PE adds an Export RT to the route. After receiving a route from another PE, the local PE compares the local Import RT and the Export RT carried in the VPN route and adds the route to the VPN instance only when the two RTs are the same."; leaf vrf-rt-type { type vrf-rt-type; description "RT type (export-extcommunity or import-extcommunity) export-extcommunity: Specifies the value of the extended community attribute of the route from an outbound interface to the destination VPN. import-extcommunity: Specifies the value of the extended community attribute. Routes with such an extended community value can be accepted."; } leaf vrf-rt-value { type string { length "3..21"; } description "RT value, in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 1:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0.0:0."; } } // list rt } // container rts container mac-duplication { presence "bd MAC duplication"; description "Enable/disable MAC duplication."; leaf period { type uint8 { range "3..10"; } must "(../period and ../cycle) or (not(../period) and not(../cycle))"; description "Number of times that MAC duplication is detected in a period."; } leaf cycle { type uint16 { range "60..900"; } units "s"; must "(../cycle mod 10 = 0) and ((../period and ../cycle) or (not(../period) and not(../cycle)))"; description "Interval at which MAC duplication is detected. The value must be a multiple of 10."; } leaf recycle { type uint16 { range "120..3600"; } units "s"; must "../recycle mod 10 = 0"; description "Period after which suppression on MAC duplication is removed. The value must be a multiple of 10."; } leaf blackhole { type boolean; default "false"; description "Enable/disable a blackhole flag."; } leaf source-blackhole { when "../blackhole='true'"; type boolean; default "false"; description "Enable/disable blackhole flag. After MAC duplication is suppressed, if a blackhole flag is set, the source port is blocked. If no blackhole flag is set, the source port is not blocked."; } } // container mac-duplication container mac-duplication-infos { config false; description "Operational state of information aggregation about MAC addresses that are duplicate in an EVPN instance."; list mac-duplication-info { key "mac-address bd-id"; description "Operational state of information about MAC addresses that are duplicate in an EVPN instance."; leaf mac-address { type pub-type:mac-address; description "MAC address."; } leaf bd-id { type uint32 { range "1..16777215"; } description "Bridge domain ID."; } leaf bd-tag { type uint32 { range "1..4094"; } description "Bridge domain label."; } leaf dampened-times { type uint8; description "Number of times that MAC duplication occurs."; } leaf suppress-flag { type boolean; description "Flag indicating whether MAC duplication is suppressed."; } leaf last-source { type string { length "1..100"; } description "Source port."; } leaf peer-ip { type inet:ipv4-address-no-zone; description "Peer IP address of a PW."; } leaf vc-id { type uint32 { range "1..4294967295"; } description "PW ID used to uniquely identify a VC."; } leaf vc-type { type l2vpn-encapsulate-type; description "Encapsulation type of a PW."; } leaf suppress-time { type yang:date-and-time; description "Date and time when MAC duplication was suppressed."; } } // list mac-duplication-info } // container mac-duplication-infos container inclusive-provider-tunnel { must "(../control-word!='true' and ../etree-enable!='true' and not(../srv6-mode)) or not(../inclusive-provider-tunnel)"; presence "EVI-IPMSI view"; description "Enable/disable mLDP P2MP configuration."; container root { presence "EVI-IPMSI view"; description "Enable/disable mLDP P2MP root configuration."; leaf data-switch-disable { type boolean; default "false"; description "Enable/disable data switch configuration."; } leaf data-delay-time { type uint32 { range "1..300"; } units "s"; description "Set a hold-off time for an mLDP P2MP tunnel to go Up."; } container p2mp { presence "MLDP P2MP view"; description "Enable/disable mLDP P2MP configuration."; leaf root-ip { type inet:ipv4-address-no-zone; description "Root address of P2MP tunnel."; } leaf opaque-value { type string { length "1..4096"; } config false; description "Opaque value (in the TLV format) that is carried in packets and is not decoded."; } leaf state { type evpn-state; config false; description "P2MP tunnel status."; } } // container p2mp } // container root container leaf { presence "EVI-IPMSI view"; description "Enable/disable mLDP P2MP leaf configuration."; leaf opaque-value { type string { length "1..4096"; } config false; description "Original opaque value in a message. The value is displayed in the format of TLV."; } leaf state { type evpn-state; config false; description "P2MP tunnel status."; } container use-next-hops { description "List of root addresses for leaf node."; list use-next-hop { key "root-ip"; description "Configure root address for leaf node."; leaf root-ip { type inet:ipv4-address-no-zone; description "Root address for leaf node."; } } // list use-next-hop } // container use-next-hops } // container leaf } // container inclusive-provider-tunnel container locator { description "Configure segment-routing IPv6 locators to EVPN."; leaf srv6-locator { type leafref { path "/ni:network-instance/ni:instances/ni:instance/srv6:srv6/srv6:locators/srv6:locator/srv6:name"; } must "/ni:network-instance/ni:instances/ni:instance[ni:name='_public_']/srv6:srv6/srv6:locators/srv6:locator[srv6:name=current()]/srv6:args-length>0"; description "Locator that is used to generate a BUM (DT2M) SID. If unicast-locator is not configured, locator is used to generate a unicast (DT2U) SID."; } leaf unicast-locator { when "../srv6-locator"; type leafref { path "/ni:network-instance/ni:instances/ni:instance/srv6:srv6/srv6:locators/srv6:locator/srv6:name"; } must "(../unicast-locator and ../unicast-locator!=../srv6-locator) or not(../unicast-locator)"; description "Locator that is used to generate a unicast (DT2U) SID."; } } // container locator container pipe { description "Configure the diffserv mode of evpn."; leaf split-mode { type boolean; must "((../split-mode='false' and not(../ingress-pipe-mode) and not(../egress-pipe-mode) and ../pipe-mode) or (../split-mode='true' and not(../pipe-mode) and ../ingress-pipe-mode and ../egress-pipe-mode and not(../ingress-pipe-mode='uniform' and ../egress-pipe-mode='uniform')))"; default "false"; description "Enable/disable split mode."; } leaf pipe-mode { when "../split-mode='false'"; type evpn-pipe-mode; must "(../split-mode='false') and ((../pipe-mode='pipe' and (../service-class) and (../color)) or (../pipe-mode='shortpipe' and (../service-class) and (../color) and (../domain-name)) or (../pipe-mode='uniform'))"; default "uniform"; description "Specify the pipe mode."; } leaf ingress-pipe-mode { when "../split-mode='true'"; type evpn-pipe-mode; must "((../split-mode='true') and (((../service-class) and (../color) and (../ingress-pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe')) or (../ingress-pipe-mode='uniform' and ../egress-pipe-mode!='uniform')))"; default "uniform"; description "Specify the ingress pipe mode."; } leaf egress-pipe-mode { when "../split-mode='true'"; type evpn-pipe-mode; must "((../split-mode='true') and (((../domain-name) and (../trust-type) and (../egress-pipe-mode='shortpipe')) or (../egress-pipe-mode='pipe') or (../egress-pipe-mode='uniform' and ../ingress-pipe-mode!='uniform')))"; default "uniform"; description "Specify the egress pipe mode."; } leaf service-class { when "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; type evpn-service-class; must "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; default "be"; description "Specify the CoS."; } leaf color { when "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; type evpn-color; must "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')"; default "green"; description "Specify the color of packets."; } leaf domain-name { when "(../pipe-mode='shortpipe' or ../egress-pipe-mode='shortpipe')"; type leafref { path "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name"; } must "(../pipe-mode='shortpipe' or ../egress-pipe-mode='shortpipe')"; default "default"; description "DS domain name."; } leaf trust-type { when "../egress-pipe-mode='shortpipe'"; type evpn-trust-type; must "../egress-pipe-mode='shortpipe'"; default "outpri"; description "Specify the trust type."; } } // container pipe } // container bd-evpn container vpws-evpn { when "../type = 'vpws-evpn'"; description "Configure VPWS mode of EVPN instance."; leaf description { type string { length "1..63"; pattern '([^?]*)'; } description "The description for EVPN instance."; } leaf rd { ext:operation-exclude "update"; type string { length "3..21"; } description "An EVPN instance address family takes effect only after it is configured with an RD. The RD can be in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 101:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0.0:0."; } leaf import-policy-name { when "../rd"; type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "The name of specify import route policy."; } leaf export-policy-name { when "../rd"; type leafref { path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name"; } description "The name of specify export route policy."; } leaf tunnel-policy-name { when "../rd"; type leafref { path "/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy/tnlm:name"; } must "(not(/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence) or (/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv6-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='srv6-te-flow-group'])) and (not(/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence) or (/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence and /tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy[tnlm:name=current()]/tnlm:ipv4-set/tnlm:select-sequence/tnlm:select-tunnel-types/tnlm:select-tunnel-type[tnlm:type!='gre']))"; description "Tunnel policy name."; } leaf local-remote-frr { type local-remote-frr-enable-type; default "default"; description "Enable local MAC and remote MAC to form FRR."; } leaf remote-frr { type local-remote-frr-enable-type; default "default"; description "Enable remote MAC to form FRR."; } leaf default-color { when "../rd"; type uint32 { range "0..4294967295"; } description "Set default color for nexthop iteration."; } leaf export-acl-name-or-id { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } description "Name or number of an IPv4 ACL used by a filtering policy to filter the routes to be advertised to a specified peer. The number ranges from 4000 to 4999, and the name must start with a letter. By default, no ACL-based filtering policy is configured, and therefore all EVN BGP routes can be advertised."; } leaf import-acl-name-or-id { type leafref { path "/acl:acl/acl:groups/acl:group/acl:identity"; } description "Name or number of an IPv4 ACL used by a filtering policy to filter the routes received from a specified peer. The number ranges from 4000 to 4999, and the name must start with a letter. By default, no ACL-based filtering policy is configured, and therefore all EVN BGP routes can be accepted."; } leaf timer-revert-delay { when "../rd"; type uint32 { range "0..3600"; } units "s"; default "0"; description "Set delay time of selecting routes in production."; } leaf srv6-mode { when "../rd"; type srv6-mode; description "SRv6 iteration mode."; } leaf down-switch { when "../rd and ../srv6-mode='te'"; type boolean; default "false"; description "Enable/disable TE to BE if the associated TE tunnel goes down."; } leaf nexthop-recursive-lookup-restrain { type boolean; default "true"; description "Enable/disable EVPN nexthop recursive lookup restrain."; } leaf nexthop-priority { type nexthop-priority-address-type; description "Routes with next-hop IPv4 addresses and routes with next-hop IPv6 addresses coexist. If the next-hop address type is set to IPv4, routes with next-hop IPv4 addresses have a higher priority. If the next-hop address type is set to IPv6, routes with next-hop IPv6 addresses have a higher priority."; } container rts { when "../rd"; description "List of RTs."; list rt { key "vrf-rt-type vrf-rt-value"; description "Configure RTs to control route advertisement between network nodes. Before sending a VPN route to a PE, the local PE adds an Export RT to the route. After receiving a route from another PE, the local PE compares the local Import RT and the Export RT carried in the VPN route and adds the route to the VPN instance only when the two RTs are the same."; leaf vrf-rt-type { type vrf-rt-type; description "RT type (export-extcommunity or import-extcommunity) export-extcommunity: Specifies the value of the extended community attribute of the route from an outbound interface to the destination VPN. import-extcommunity: Specifies the value of the extended community attribute. Routes with such an extended community value can be accepted."; } leaf vrf-rt-value { type string { length "3..21"; } description "RT value, in any of the following formats: 1. 16-bit AS number:32-bit user-defined number, 1:3 for example. A 16-bit AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0:0. 2. 32-bit IP address:16-bit user-defined number, 192.168.122.15:1 for example. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535. 3. 32-bit AS number:16-bit user-defined number, 10.11:3 for example. A 32-bit AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the VPN Target value cannot be 0.0:0."; } } // list rt } // container rts } // container vpws-evpn container tunnel-infos { config false; description "List of tunnel informations."; list tunnel-info { key "type peer-ip id"; description "Operational state of tunnel informations."; leaf type { type tunnel-type; description "Tunnel's type."; } leaf peer-ip { type inet:ip-address-no-zone; description "Nexthop address through which the packet has to be sent."; } leaf id { type uint32 { range "0..4294967295"; } description "Tunnel's ID."; } leaf color { type uint32 { range "0..4294967295"; } description "Color information for tunnel."; } leaf name { type string { length "0..256"; } description "Tunnel's name."; } } // list tunnel-info } // container tunnel-infos container mac-route-infos { config false; description "List of MAC routes."; list mac-route-info { key "prefix"; description "Statistics of of MAC routes."; leaf prefix { type mac-prefix; description "MAC route prefix."; } container label-stacks { description "Statistics of EVPN label stacks."; list label-stack { key "label-stack level"; description "Operational data of the EVPN label stack."; leaf label-stack { type uint32 { range "1..4294967295"; } description "Label stack index."; } leaf level { type uint32 { range "1..4294967295"; } description "Label level."; } leaf type { type string { length "1..20"; } description "Label type."; } leaf label { type string { length "1..20"; } description "Label value."; } leaf out-interface { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } description "Outbound interface name."; } } // list label-stack } // container label-stacks } // list mac-route-info } // container mac-route-infos container per-instance-label { config false; description "Operational data of label shared by all private network routes in the EVPN instance."; leaf unicast-label { type uint32; description "Label shared by unicast routes in the EVPN instance."; } leaf bum-label { type uint32; description "Label shared by bum routes in the EVPN instance."; } leaf bypass-label { type uint32; description "Label shared by bypass routes in the EVPN instance."; } } // container per-instance-label container df-infos { config false; description "List of DF info."; list df-info { key "esi"; description "Operational data of the Df information."; leaf esi { type esi; description "ESI, in the format of 00xx.xxxx.xxxx.xxxx.xxxx or 01xx.xxxx.xxxx.xxxx.xxxx, in which x ranges from 0 to F. A static ESI cannot be all 0s."; } leaf df-result { type df-result; description "DF result."; } container pref-elec-infos { config false; description "List of information about DF election."; list pref-elec-info { key "origin-ip"; description "Operational data of DF election information."; leaf origin-ip { type inet:ip-address-no-zone; description "Source IP address of a PE."; } leaf df-result { type df-election-result; description "DF election result, which can be DF or buckup DF."; } leaf preference { type uint16 { range "1..65535"; } default "32767"; description "Preference of ESI."; } leaf dp { type uint8; description "The non-preemption mode is used for DF election."; } leaf ac-df { type uint8; description "The AC status affects DF election."; } } // list pref-elec-info } // container pref-elec-infos } // list df-info } // container df-infos container df-timer-info { config false; description "Operational data of Df timer information."; container esi-infos { description "List of displaying the information of the ESI Df timer."; list esi-info { key "esi"; description "Operational data of the ESI Df timer information."; leaf esi { type esi; description "ESI, in the format of 00xx.xxxx.xxxx.xxxx.xxxx or 01xx.xxxx.xxxx.xxxx.xxxx, in which x ranges from 0 to F. A static ESI cannot be all 0s."; } leaf timer-type { type df-timer-type; description "Timer type."; } leaf timer-state { type df-timer-mode; description "DF timer status."; } leaf time-left { type uint32; description "Remaining time in second before the DF timer expires."; } } // list esi-info } // container esi-infos container interface-infos { config false; description "List of displaying the information of the interface Df timer."; list interface-info { key "interface-name"; description "Operational data of the interface Df timer information."; leaf interface-name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } description "The interface name."; } leaf bd-id { type uint32; description "BD ID."; } leaf timer-type { type df-timer-type; description "Timer type."; } leaf timer-state { type df-timer-mode; description "DF timer status."; } leaf time-left { type uint32; description "Remaining time in second before the DF timer expires."; } } // list interface-info } // container interface-infos container pw-infos { config false; description "List of displaying the information of the PW Df timer."; list pw-info { key "peer-ip vc-id vc-type"; description "Operational data of the PW Df timer information."; leaf peer-ip { type leafref { path "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance/l2vpn:vpls/l2vpn:ldp-signaling/l2vpn:pws/l2vpn:pw/l2vpn:peer-ip"; } description "Peer IP address."; } leaf vc-id { type leafref { path "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance/l2vpn:vpls/l2vpn:ldp-signaling/l2vpn:pws/l2vpn:pw/l2vpn:negotiation-vc-id"; } description "PW ID used to uniquely identify a VC."; } leaf vc-type { type leafref { path "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance/l2vpn:vpls/l2vpn:ldp-signaling/l2vpn:pws/l2vpn:pw/l2vpn:encapsulation-type"; } description "Encapsulation type of a VPLS PW."; } leaf timer-type { type df-timer-type; description "Timer type."; } leaf timer-state { type df-timer-mode; description "DF timer status."; } leaf time-left { type uint32; description "Remaining time in second before the DF timer expires."; } } // list pw-info } // container pw-infos } // container df-timer-info container esi-advance { config false; description "Operational data of the advanced information of an ESI."; container locals { description "List of displaying the advanced information for a local ESI."; list local { key "esi"; description "Operational data of the advanced information of a local ESI."; leaf esi { type esi; description "ESI, in the format of 00xx.xxxx.xxxx.xxxx.xxxx or 01xx.xxxx.xxxx.xxxx.xxxx, in which x ranges from 0 to F. A static ESI cannot be all 0s."; } leaf topology { type topology; description "Network topology identified by an ESI."; } } // list local } // container locals container remotes { description "List of displaying the advanced information for a remote ESI."; list remote { key "esi remote-peer"; description "Operational data of the advanced information of a remote ESI."; leaf esi { type esi; description "ESI, in the format of 00xx.xxxx.xxxx.xxxx.xxxx or 01xx.xxxx.xxxx.xxxx.xxxx, in which x ranges from 0 to F. A static ESI cannot be all 0s."; } leaf remote-peer { type inet:ip-address-no-zone; description "IP address of a peer PE."; } leaf topology { type topology; description "Network topology identified by an ESI."; } } // list remote } // container remotes } // container esi-advance container mac-routes { config false; description "List of MAC routes."; list mac-route { key "prefix rd from route-type-flag"; config false; description "Statistics of MAC routes."; leaf prefix { type mac-prefix; description "MAC route prefix."; } leaf rd { type string { length "3..21"; } description "Route distinguisher."; } leaf from { type inet:ip-address-no-zone; description "Source peer that sends a route."; } leaf route-type-flag { type best-flag-type; description "Route type."; } leaf source-address-family { type address-family-type; description "Source address family."; } leaf mpls-label1 { type uint32 { range "0..4294967295"; } description "Label1, it means L2 VNI for MAC Route and L3 VNI for Prefix Route."; } leaf mpls-label2 { type uint32 { range "0..4294967295"; } description "Label2, it means L3 VNI for MAC Route."; } leaf frr-out-interface { type string { length "1..64"; } description "Local-remote frr direct out-interface."; } leaf frr-nexthop { type inet:ip-address-no-zone; description "Local-remote frr nexthop."; } leaf frr-out-tunnel-name { type string { length "1..64"; } description "Local-Remote Frr Tunnel Out-Interface."; } leaf prefix-sid { type inet:ipv6-address-no-zone; description "Prefix-SID attribute."; } leaf bypass-prefix-sid { type inet:ipv6-address-no-zone; description "Bypass Prefix-SID attribute."; } leaf effect-nexthop { type inet:ip-address-no-zone; description "Effective nexthop."; } leaf redirect-out-interface { type string { length "1..64"; } description "Redirect out-interface."; } leaf nexthop { type inet:ip-address-no-zone; description "Next-hop address to which packets are sent."; } leaf local-preference { type uint32; description "Local priority. The attribute is only fit for the routes from IBGP peer, not suit for which of EBGP peer."; } leaf protocol-preferred-value { type uint32 { range "0..4294967295"; } description "Preferred value of a protocol."; } leaf route-preference { type uint8 { range "0..255"; } description "Preference of a route."; } leaf route-worse-reason { type string { length "1..50"; } description "Reason why a route is not selected."; } leaf as-path { type string { length "1..300"; } description "List of the ASs that packets pass through."; } leaf origin { type bgp-origin-type; description "Origin of a route."; } leaf med { type uint32 { range "0..4294967295"; } description "Route MED in the attribute node. The attribute is only fit for the routes from EBGP peer, not suit for which of IBGP peer."; } leaf route-flag { type string { length "1..100"; } description "Route flag that contains a string of characters."; } leaf advertised-peers { type string { length "1..300"; } description "List of sending peers."; } leaf route-duration-time { type uint32; description "Time stamp of a route."; } leaf pmsi { type string { length "1..300"; } description "PMSI attribute."; } leaf other-attribute { type string { length "1..300"; } description "Other attribute."; } leaf private-route { type string { length "1..300"; } description "Private route attribute."; } leaf outbound-interface { type string { length "1..63"; } description "Name of the outbound interface of a route."; } leaf remote-route-id { type inet:ipv4-address-no-zone; description "Router ID of a peer."; } leaf community { type string { length "1..300"; } description "Community attribute."; } leaf ext-community { type string { length "1..300"; } description "Extended community attribute."; } leaf ipv6-ext-community { type string { length "1..300"; } description "IPv6 extended community attribute."; } leaf large-community { type string { length "1..200"; } description "Large-community attribute information."; } leaf cluster-list { type string { length "1..300"; } description "List of Cluster IDs."; } leaf relay-nexthop { type inet:ip-address-no-zone; description "Iterated next hop."; } leaf relay-tunnel-name { type string { length "1..44"; } description "Name of an iteration tunnel."; } leaf in-label { type uint32 { range "0..4294967295"; } description "In-label."; } leaf out-label { type uint32 { range "0..4294967295"; } description "Out-label."; } leaf originator { type inet:ipv4-address-no-zone; description "Router ID of the route initiator."; } container direct-pw-info { description "Operational data of direct outbound interface."; leaf peer-ip { type inet:ipv4-address-no-zone; description "Peer IP address of a PW."; } leaf vc-id { type uint32 { range "1..4294967295"; } description "VC ID."; } leaf vc-type { type l2vpn-encapsulate-type; description "Encapsulation type of a PW."; } } // container direct-pw-info } // list mac-route } // container mac-routes container ad-routes { config false; description "List of AD routes."; list ad-route { key "prefix rd from route-type-flag"; config false; description "Statistics of AD routes."; leaf prefix { type ad-prefix; description "AD route prefix."; } leaf rd { type string { length "3..21"; } description "Route distinguisher."; } leaf from { type inet:ip-address-no-zone; description "Source peer that sends a route."; } leaf route-type-flag { type best-flag-type; description "Route type."; } leaf prefix-sid { type inet:ipv6-address-no-zone; description "Prefix-SID attribute."; } leaf bypass-prefix-sid { type inet:ipv6-address-no-zone; description "Bypass Prefix-SID attribute."; } leaf nexthop { type inet:ip-address-no-zone; description "Next-hop address to which packets are sent."; } leaf local-preference { type uint32; description "Local priority. The attribute is only fit for the routes from IBGP peer, not suit for which of EBGP peer."; } leaf protocol-preferred-value { type uint32 { range "0..4294967295"; } description "Preferred value of a protocol."; } leaf route-preference { type uint8 { range "0..255"; } description "Preference of a route."; } leaf route-worse-reason { type string { length "1..50"; } description "Reason why a route is not selected."; } leaf as-path { type string { length "1..300"; } description "List of the ASs that packets pass through."; } leaf origin { type bgp-origin-type; description "Origin of a route."; } leaf med { type uint32 { range "0..4294967295"; } description "Route MED in the attribute node. The attribute is only fit for the routes from EBGP peer, not suit for which of IBGP peer."; } leaf route-flag { type string { length "1..100"; } description "Route flag that contains a string of characters."; } leaf advertised-peers { type string { length "1..300"; } description "List of sending peers."; } leaf route-duration-time { type uint32; description "Time stamp of a route."; } leaf pmsi { type string { length "1..300"; } description "PMSI attribute."; } leaf other-attribute { type string { length "1..300"; } description "Other attribute."; } leaf private-route { type string { length "1..300"; } description "Private route attribute."; } leaf outbound-interface { type string { length "1..63"; } description "Name of the outbound interface of a route."; } leaf remote-route-id { type inet:ipv4-address-no-zone; description "Router ID of a peer."; } leaf community { type string { length "1..300"; } description "Community attribute."; } leaf ext-community { type string { length "1..300"; } description "Extended community attribute."; } leaf ipv6-ext-community { type string { length "1..300"; } description "IPv6 extended community attribute."; } leaf large-community { type string { length "1..200"; } description "Large-community attribute information."; } leaf cluster-list { type string { length "1..300"; } description "List of Cluster IDs."; } leaf relay-nexthop { type inet:ip-address-no-zone; description "Iterated next hop."; } leaf relay-tunnel-name { type string { length "1..44"; } description "Name of an iteration tunnel."; } leaf in-label { type uint32 { range "0..4294967295"; } description "In-label."; } leaf out-label { type uint32 { range "0..4294967295"; } description "Out-label."; } leaf originator { type inet:ipv4-address-no-zone; description "Router ID of the route initiator."; } } // list ad-route } // container ad-routes container es-routes { config false; description "List of ES routes."; list es-route { key "prefix rd from route-type-flag"; config false; description "Statistics of ES routes."; leaf prefix { type es-prefix; description "ES route prefix."; } leaf rd { type string { length "3..21"; } description "Route distinguisher."; } leaf from { type inet:ip-address-no-zone; description "Source peer that sends a route."; } leaf route-type-flag { type best-flag-type; description "Route type."; } leaf nexthop { type inet:ip-address-no-zone; description "Next-hop address to which packets are sent."; } leaf local-preference { type uint32; description "Local priority. The attribute is only fit for the routes from IBGP peer, not suit for which of EBGP peer."; } leaf protocol-preferred-value { type uint32 { range "0..4294967295"; } description "Preferred value of a protocol."; } leaf route-preference { type uint8 { range "0..255"; } description "Preference of a route."; } leaf route-worse-reason { type string { length "1..50"; } description "Reason why a route is not selected."; } leaf as-path { type string { length "1..300"; } description "List of the ASs that packets pass through."; } leaf origin { type bgp-origin-type; description "Origin of a route."; } leaf med { type uint32 { range "0..4294967295"; } description "Route MED in the attribute node. The attribute is only fit for the routes from EBGP peer, not suit for which of IBGP peer."; } leaf route-flag { type string { length "1..100"; } description "Route flag that contains a string of characters."; } leaf advertised-peers { type string { length "1..300"; } description "List of sending peers."; } leaf route-duration-time { type uint32; description "Time stamp of a route."; } leaf pmsi { type string { length "1..300"; } description "PMSI attribute."; } leaf other-attribute { type string { length "1..300"; } description "Other attribute."; } leaf private-route { type string { length "1..300"; } description "Private route attribute."; } leaf outbound-interface { type string { length "1..63"; } description "Name of the outbound interface of a route."; } leaf remote-route-id { type inet:ipv4-address-no-zone; description "Router ID of a peer."; } leaf community { type string { length "1..300"; } description "Community attribute."; } leaf ext-community { type string { length "1..300"; } description "Extended community attribute."; } leaf ipv6-ext-community { type string { length "1..300"; } description "IPv6 extended community attribute."; } leaf large-community { type string { length "1..200"; } description "Large-community attribute information."; } leaf cluster-list { type string { length "1..300"; } description "List of Cluster IDs."; } leaf relay-nexthop { type inet:ip-address-no-zone; description "Iterated next hop."; } leaf relay-tunnel-name { type string { length "1..44"; } description "Name of an iteration tunnel."; } leaf in-label { type uint32 { range "0..4294967295"; } description "In-label."; } leaf out-label { type uint32 { range "0..4294967295"; } description "Out-label."; } leaf originator { type inet:ipv4-address-no-zone; description "Router ID of the route initiator."; } } // list es-route } // container es-routes container inclusive-routes { config false; description "List of inclusive routes."; list inclusive-route { key "prefix rd from route-type-flag"; config false; description "Statistics of inclusive routes."; leaf prefix { type inclusive-prefix; description "Inclusive route prefix."; } leaf rd { type string { length "3..21"; } description "Route distinguisher."; } leaf from { type inet:ip-address-no-zone; description "Source peer that sends a route."; } leaf route-type-flag { type best-flag-type; description "Route type."; } leaf prefix-sid { type inet:ipv6-address-no-zone; description "Prefix-SID attribute."; } leaf nexthop { type inet:ip-address-no-zone; description "Next-hop address to which packets are sent."; } leaf local-preference { type uint32; description "Local priority. The attribute is only fit for the routes from IBGP peer, not suit for which of EBGP peer."; } leaf protocol-preferred-value { type uint32 { range "0..4294967295"; } description "Preferred value of a protocol."; } leaf route-preference { type uint8 { range "0..255"; } description "Preference of a route."; } leaf route-worse-reason { type string { length "1..50"; } description "Reason why a route is not selected."; } leaf as-path { type string { length "1..300"; } description "List of the ASs that packets pass through."; } leaf origin { type bgp-origin-type; description "Origin of a route."; } leaf med { type uint32 { range "0..4294967295"; } description "Route MED in the attribute node. The attribute is only fit for the routes from EBGP peer, not suit for which of IBGP peer."; } leaf route-flag { type string { length "1..100"; } description "Route flag that contains a string of characters."; } leaf advertised-peers { type string { length "1..300"; } description "List of sending peers."; } leaf route-duration-time { type uint32; description "Time stamp of a route."; } leaf pmsi { type string { length "1..300"; } description "PMSI attribute."; } leaf other-attribute { type string { length "1..300"; } description "Other attribute."; } leaf private-route { type string { length "1..300"; } description "Private route attribute."; } leaf outbound-interface { type string { length "1..63"; } description "Name of the outbound interface of a route."; } leaf remote-route-id { type inet:ipv4-address-no-zone; description "Router ID of a peer."; } leaf community { type string { length "1..300"; } description "Community attribute."; } leaf ext-community { type string { length "1..300"; } description "Extended community attribute."; } leaf ipv6-ext-community { type string { length "1..300"; } description "IPv6 extended community attribute."; } leaf large-community { type string { length "1..200"; } description "Large-community attribute information."; } leaf cluster-list { type string { length "1..300"; } description "List of Cluster IDs."; } leaf relay-nexthop { type inet:ip-address-no-zone; description "Iterated next hop."; } leaf relay-tunnel-name { type string { length "1..44"; } description "Name of an iteration tunnel."; } leaf in-label { type uint32 { range "0..4294967295"; } description "In-label."; } leaf out-label { type uint32 { range "0..4294967295"; } description "Out-label."; } leaf originator { type inet:ipv4-address-no-zone; description "Router ID of the route initiator."; } } // list inclusive-route } // container inclusive-routes container qos { description "Configure QoS application."; container evpn-policy-applys { when "../../evpn:type='bd-evpn'"; description "List of traffic policy applications."; list evpn-policy-apply { key "direction"; description "Configure the application of a traffic policy."; leaf direction { type qos:qos-direction-inbound; description "Direction."; } leaf policy-name { ext:operation-exclude "update" { description "After the configuration is created, the node cannot be modified."; } type leafref { path "/qos:qos/qos:classifier-template/qos:traffic-policys/qos:traffic-policy/qos:name"; } mandatory true; description "Policy name."; } } // list evpn-policy-apply } // container evpn-policy-applys } // container qos container smet-routes { config false; description "List of SMET routes."; list smet-route { key "rd prefix from route-type-flag"; config false; description "Statistics of SMET routes."; leaf rd { type string { length "3..21"; } description "Route distinguisher."; } leaf prefix { type smet-prefix; description "Prefix of SMET route."; } leaf from { type inet:ip-address-no-zone; description "Source peer that sends a route."; } leaf route-type-flag { type best-flag-type; description "Route type."; } leaf nexthop { type inet:ip-address-no-zone; description "Next-hop address to which packets are sent."; } leaf local-preference { type uint32; description "Local preference."; } leaf protocol-preferred-value { type uint32 { range "0..4294967295"; } description "Preferred value of a protocol."; } leaf as-path { type string { length "1..300"; } description "List of the ASs that packets pass through."; } leaf origin { type bgp-origin-type; description "Origin of a route."; } leaf route-flag { type string { length "1..100"; } description "Route flag."; } leaf advertised-peers { type string { length "1..300"; } description "Sending peers."; } leaf route-duration-time { type uint32 { range "0..4294967295"; } description "Time stamp of a route."; } leaf originator { type inet:ipv4-address-no-zone; description "Router ID of the route initiator."; } leaf remote-route-id { type inet:ipv4-address-no-zone; description "Router ID of a peer."; } leaf other-attribute { type string { length "1..300"; } description "Other attribute."; } leaf flags { type string { length "1..50"; } description "Flag fields of INCLUDE and EXCLUDE filter-modes and IGMP snooping version."; } leaf qos-info { type string { length "1..20"; } description "Qos infomation."; } } // list smet-route } // container smet-routes container join-routes { config false; description "List of IGMP Join Synch routes."; list join-route { key "rd prefix from route-type-flag"; config false; description "Statistics of IGMP Join Synch routes."; leaf rd { type string { length "3..21"; } description "Route distinguisher."; } leaf prefix { type join-prefix; description "Prefix of IGMP Join Synch route."; } leaf from { type inet:ip-address-no-zone; description "Source peer that sends a route."; } leaf route-type-flag { type best-flag-type; description "Route type."; } leaf nexthop { type inet:ip-address-no-zone; description "Next-hop address to which packets are sent."; } leaf local-preference { type uint32; description "Local preference."; } leaf protocol-preferred-value { type uint32 { range "0..4294967295"; } description "Preferred value of a protocol."; } leaf as-path { type string { length "1..300"; } description "List of the ASs that packets pass through."; } leaf origin { type bgp-origin-type; description "Origin of a route."; } leaf route-flag { type string { length "1..100"; } description "Route flag."; } leaf advertised-peers { type string { length "1..300"; } description "Sending peers."; } leaf route-duration-time { type uint32 { range "0..4294967295"; } description "Time stamp of a route."; } leaf originator { type inet:ipv4-address-no-zone; description "Router ID of the route initiator."; } leaf remote-route-id { type inet:ipv4-address-no-zone; description "Router ID of a peer."; } leaf other-attribute { type string { length "1..300"; } description "Other attribute."; } leaf flags { type string { length "1..50"; } description "Flag fields of INCLUDE and EXCLUDE filter-modes and IGMP snooping version."; } leaf qos-info { type string { length "1..20"; } description "Qos infomation."; } } // list join-route } // container join-routes container mac-limit { when "../evpn:type='normal' or ../evpn:type='bd-evpn'"; description "Configure MAC routing limit for an evpn instance."; container rule { description "Configure rule of MAC routes limit."; leaf maximum { type uint32 { range "1..4294967295"; } description "Maximum number of MAC routes supported by an EVPN instance."; } leaf action { when "../maximum"; type limit-action; default "mac-unchanged"; description "The action of MAC limit when the number of EVPN MAC routes exceeds the specified number."; } leaf current-mac-number { when "../maximum"; type uint32; config false; description "Current MAC number of EVPN instance."; } } // container rule container alarm-threshold { description "Configure alarm threshold of MAC routing limit in percentage."; leaf lower { type uint8 { range "1..100"; } units "%"; must "../upper > ../lower"; default "70"; description "The lower limit in percentage for MAC routes."; } leaf upper { type uint8 { range "1..100"; } units "%"; must "../upper > ../lower"; default "80"; description "The upper limit in percentage for MAC routes."; } } // container alarm-threshold } // container mac-limit } // list instance } // container instances container remote-sids { config false; description "List of remote SID."; list remote-sid { key "remote-sid"; description "Operational data of remote SID."; leaf remote-sid { type inet:ipv6-address-no-zone; description "Remote SID attribute."; } leaf locator-sid { type inet:ipv6-address-no-zone; description "Locator SID."; } leaf locator-mask-length { type uint8 { range "0..128"; } description "Specify the mask length of a locator SID."; } leaf evpn-type { type evpn-type; description "The value specifies the Type of EVPN instance. The value must be normal/i-evpn/b-evpn/bd-evpn/vpws-evpn."; } leaf evpn-name { type name-type { length "1..31"; } description "EVPN instance name."; } leaf bd-id { type uint32 { range "0..16777215"; } description "The identification of the BD."; } leaf evpl-id { type uint32 { range "1..16777215"; } description "The identification of the EVPL instance."; } } // list remote-sid } // container remote-sids container default-parameter { config false; description "Operational data of EVPN initial configuration information."; leaf access-mode { type access-mode; description "EVPN access Mode."; } leaf service-mode { type service-mode; description "EVPN interface service Mode."; } leaf apply-label-mode { type apply-label-mode; description "EVPN apply label Mode."; } } // container default-parameter container recover-timers { config false; description "List of EVPN recover timer informations."; list recover-timer { key "name"; description "Operational state of EVPN recover timer informations."; leaf name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } description "The interface name."; } leaf mode { type timer-mode; description "Mode of EVPN recover timer."; } leaf begin-time { type yang:date-and-time; description "Begin time of EVPN recover timer."; } leaf end-time { type yang:date-and-time; description "End time of EVPN recover timer."; } leaf time-left { type uint32; units "s"; description "Time left of EVPN recover timer."; } } // list recover-timer } // container recover-timers container track-peer-timer-infos { config false; description "List of EVPN track peer timer informations."; list track-peer-timer-info { key "esi"; description "Operational state of EVPN track peer timer informations."; leaf esi { type esi; description "ESI, in the format of 00xx.xxxx.xxxx.xxxx.xxxx or 01xx.xxxx.xxxx.xxxx.xxxx, in which x ranges from 0 to F. A static ESI cannot be all 0s."; } leaf timer-type { type timer-type; description "Timer type."; } leaf timer-state { type timer-mode; description "Timer status."; } leaf time-left { type uint32; units "s"; description "Remaining time."; } } // list track-peer-timer-info } // container track-peer-timer-infos container sticky-mac-confliction-infos { config false; description "List of EVPN sticky/static mac conflicting informations."; list sticky-mac-confliction-info { key "mac-address bd-id vid"; description "Operational data of EVPN sticky/static mac conflicting informations."; leaf mac-address { type pub-type:mac-address; description "MAC address."; } leaf bd-id { type uint32 { range "1..16777215"; } description "The identification of the BD."; } leaf vid { type uint16 { range "0..4094"; } description "VLAN ID."; } leaf interface-name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } description "Interface name."; } leaf peer-ip { type inet:ip-address-no-zone; description "Peer IP address."; } } // list sticky-mac-confliction-info } // container sticky-mac-confliction-infos container system { description "Configure the system configuration of evpn."; container port-select { description "Configure the port selection abort EVPN accessing VLL."; leaf flag { type boolean; default "true"; description "Enable/disable the coupling flag in the EVPN-accessing-VLL direction."; } } // container port-select container self-board { description "Configure evpn reserve-interface enhancement."; leaf flag { type boolean; default "false"; description "Enable/disable the flag to use the internal GRE reserved interfaces to implement public-network-and-private-network decoupling in the BUM forwarding process."; } } // container self-board container evpn-udp-port { description "Configure the UDP port."; leaf port-id { type uint32 { range "1025..65535"; } description "Specifies a port number for a UDP interface."; } } // container evpn-udp-port } // container system } // container evpn rpc reset-evpn-mac-duplication { ext:node-ref "/evpn:evpn/evpn:instances/evpn:instance/evpn:normal-evpn/evpn:mac-duplication-infos"; ext:node-ref "/evpn:evpn/evpn:instances/evpn:instance/evpn:bd-evpn/evpn:mac-duplication-infos"; description "Reset EVPN MAC duplication."; input { leaf name { type name-type { length "1..31"; } mandatory true; description "EVPN instance name."; } leaf bd-id { type uint32 { range "1..16777215"; } description "BD ID."; } leaf mac-address { type pub-type:mac-address { length "1..255"; } description "MAC address."; } leaf vlan-id { type uint32 { range "1..4094"; } description "VLAN ID."; } } } // rpc reset-evpn-mac-duplication } // module huawei-evpn
© 2023 YumaWorks, Inc. All rights reserved.