Management of Ethernet virtual private line.
Version: 2020-07-21
module huawei-evpl { yang-version 1; namespace "urn:huawei:yang:huawei-evpl"; prefix evpl; import huawei-ifm { prefix ifm; } import ietf-inet-types { prefix inet; } import huawei-extension { prefix ext; } 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 "Management of Ethernet virtual private line."; revision "2020-07-21" { description "Add node ignore-ac-state."; reference "Huawei private."; } revision "2019-03-01" { description "Initial revision."; reference "Huawei private."; } ext:task-name "evpl"; typedef evpl-mode { type enumeration { enum "vxlan-mode" { value 0; description "VXLAN mode."; } enum "mpls-mode" { value 1; status deprecated; description "MPLS mode."; } enum "srv6-mode" { value 2; status deprecated; description "SRv6 mode."; } enum "none" { value 3; description "None mode."; } } description "The mode of EVPL instance."; } container evpl { description "Management of EVPL."; container instances { description "List of EVPL instances."; list instance { key "id"; description "Configure attribute of EVPL instance."; leaf id { type uint32 { range "1..16777215"; } description "The identification of the EVPL instance."; } leaf mode { ext:operation-exclude "update"; type evpl-mode; mandatory true; description "The mode of the EVPL instance, that not support modification."; } container interfaces { when "(../mode != 'vxlan-mode')"; description "List of service interfaces that a EVPL instance corresponds."; list interface { key "name"; max-elements 1; description "Configure the service interface that a EVPL instance corresponds."; leaf name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'PW-VE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:class != 'main-interface') or (/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'PW-VE')"; description "The name of interface."; } leaf ignore-ac-state { type boolean; must "(../ignore-ac-state='true' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../name]/ifm:type != 'PW-VE') or (../ignore-ac-state='false')"; default "false"; description "Enable/disable ignore the attachment circuit status on an interface."; } container protocol-actions { description "List of interface link protocol action."; list protocol-action { must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:type='50|100GE'"; must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:parent-name and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../evpl:name]/ifm:l2-mode-enable='false'"; key "protocol-type action"; description "Configure link-protocol action."; leaf protocol-type { type protocol-type; description "Protocol type."; } leaf action { type action-type; description "Protocol action."; } leaf mode { when "../action='transport'"; type mode-evpn; mandatory true; description "Link-protocol transport mode."; } } // list protocol-action } // container protocol-actions } // list interface } // container interfaces container peers { when "(../mode = 'vxlan-mode')"; description "List of provider edge nodes that a EVPL instance corresponds with VXLAN encapsulation."; list peer { key "name peer-ip"; max-elements 1; description "Configure provider edge node that a EVPL instance corresponds with VXLAN encapsulation."; leaf name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } must "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'PW-VE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:class = 'main-interface'"; description "The name of interface."; } leaf peer-ip { type inet:ipv4-address-no-zone; description "The address of provider edge node."; } } // list peer } // container peers container evpl-statistics { when "(../mode = 'vxlan-mode')"; description "Configure an EVPL instance."; leaf statistics-enable { type boolean; default "false"; description "Enable/disable EVPL message statistical function."; } } // container evpl-statistics container nvo3 { description "Configure NVO3 for an EVPL instance."; container attribute { description "Configure the attribute for an EVPL instance in VXLAN mode."; leaf vtep-ip { type inet:ipv4-address-no-zone; description "The address of VXLAN tunnel source point. When not configured, the address of interface NVE is used as default."; } } // container attribute container vni-lists { description "List of VXLAN network identifiers."; list vni-list { key "vni"; max-elements 1; description "Configure a VNI list for an EVPL instance in VXLAN mode."; leaf vni { type uint32 { range "1..16777215"; } description "VXLAN network identifier."; } } // list vni-list } // container vni-lists } // container nvo3 container evpn { description "Configure EVPL instance bound to an EVPN instance."; leaf name { type leafref { path "/evpn:evpn/evpn:instances/evpn:instance/evpn:name"; } must "/evpn:evpn/evpn:instances/evpn:instance[name=current()]/evpn:type='vpws-evpn' and /evpn:evpn/evpn:instances/evpn:instance[name=current()]/evpn:vpws-evpn/evpn:rd and ../../evpl:mode!='vxlan-mode'"; description "Configure EVPL instances bound to an EVPN instance."; } leaf local-service-id { ext:operation-exclude "update"; when "../name"; type uint32 { range "1..16777215"; } must "(../local-service-id and ../remote-service-id) or (not(../local-service-id) and not(../remote-service-id))"; description "Configure the local SID."; } leaf remote-service-id { ext:operation-exclude "update"; when "../name"; type uint32 { range "1..16777215"; } must "(../local-service-id and ../remote-service-id) or (not(../local-service-id) and not(../remote-service-id))"; description "Configure the remote SID."; } leaf ignore-match-mtu { when "../name"; type boolean; default "false"; description "Enable/disable the ignore flag of matching MTU from peer device."; } leaf balancing-ignore-esi { when "../name"; type boolean; default "false"; description "Enable/disable the ignore flag of ESI for load balance."; } leaf control-word { when "../name"; type boolean; must "(../control-word='true' and ../../evpl:mode!='vxlan-mode') or ../control-word!='true'"; default "false"; description "Enable/disable EVPL control word."; } container vrrp { when "../name"; presence "Configure associated VRRP group."; description "Configure associated VRRP group."; leaf id { ext:operation-exclude "update"; type uint8 { range "1..255"; } mandatory true; description "ID of the associated VRRP group."; } leaf interface-name { ext:operation-exclude "update"; type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } mandatory true; description "Name of the interface where the associated VRRP group resides."; } leaf version { ext:operation-exclude "update"; type evpl-vrrp-version; mandatory true; description "The VRRP version, which includes vrrp and vrrp6."; } } // container vrrp container evpl-info { config false; description "Operational state of EVPL info."; leaf ac-interface { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } description "The AC interface bound to EVPL instance."; } leaf evpl-state { type evpl-state; description "The state of EVPL instance."; } leaf local-ctrl-word { type boolean; description "The local control word."; } leaf local-mtu { type uint16 { range "0..65535"; } units "Byte"; description "The value of local MTU, just from the interface which bound to the EVPL instance. If MTU is 0, it means the ignore flag of checking MTU is enabled."; } leaf local-reduancy-mode { type redundancy-mode; description "The local reduancy mode, which includes single-active and all-active modes."; } leaf local-df-state { type df-state; description "The local DF state."; } leaf local-df-elec-type { type decide-primary-type; description "Type of determining the primary/backup status of local DF."; } leaf remote-reduancy-mode { type redundancy-mode; description "The remote reduancy mode, which includes single-active and all-active modes."; } leaf remote-pri-df-num { type uint32 { range "0..4294967295"; } description "Number of primary DFs."; } leaf remote-back-df-num { type uint32 { range "0..4294967295"; } description "Number of backup DFs."; } leaf remote-none-df-num { type uint32 { range "0..4294967295"; } description "Number of none DFs."; } leaf tunnel-type { type evpn-tunnel-type; description "The tunnel type of EVPN network."; } leaf evpl-type { type evpn-evpl-type; description "The type of EVPL."; } leaf if-last-up-time { type yang:date-and-time; description "The last up time of AC interface."; } leaf last-pri-time { type yang:date-and-time; description "The last time to be primary DF."; } leaf last-backup-time { type yang:date-and-time; description "The last time to be backup DF."; } } // container evpl-info container evpl-peer-infos { config false; description "List of EVPL peer info."; list evpl-peer-info { key "peer-ip nexthop-ip"; description "Operational state of EVPL peer info."; leaf peer-ip { type inet:ip-address-no-zone; description "Peer IP address."; } leaf nexthop-ip { type inet:ip-address-no-zone; description "Original nexthop IP address."; } leaf remote-df-state { type df-state; description "Remote DF status."; } leaf remote-mtu { type uint32 { range "1..4294967295"; } units "Byte"; description "The value of remote MTU, just from the interface which bound to the EVPL instance. If MTU is 0, it means the ignore flag of checking MTU is enabled."; } leaf remote-ctrl-word { type boolean; description "The remote control word."; } leaf remote-esi { type esi { length "1..24"; } description "Remote ESI."; } leaf eline-role { type eline-role; description "The E-Line role."; } container tunnel-infos { config false; description "List of EVPL peer tunnel informations."; list tunnel-info { key "id"; description "Operational state of EVPL peer tunnel informations."; leaf id { type string { length "1..20"; } description "Tunnel ID."; } leaf type { type evpl-tunnel-type; description "Tunnel type."; } } // list tunnel-info } // container tunnel-infos } // list evpl-peer-info } // container evpl-peer-infos container label-stacks { config false; 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 container locators { when "../../evpl:mode!='vxlan-mode' and ../evpn:name"; description "List of locators used by segment-routing IPv6 for EVPN."; list locator { must "/evpn:evpn/evpn:instances/evpn:instance[evpn:name=current()/../../evpn:name]/evpn:vpws-evpn/evpn:rd"; key "name"; max-elements 1; description "Configure SRv6 locator."; leaf name { type leafref { path "/ni:network-instance/ni:instances/ni:instance/srv6:srv6/srv6:locators/srv6:locator/srv6:name"; } description "Locator name."; } } // list locator } // container locators } // container evpn container vxlan-mode-phb { when "../evpl:mode='vxlan-mode'"; description "Configure QoS PHB VXLAN mode."; leaf diffserv-domain-name { type leafref { path "/qos:qos/qos:classifier-template/qos:diffserv-domains/qos:diffserv-domain/qos:name"; } description "Name of a diffserv-domain."; } } // container vxlan-mode-phb } // list instance } // container instances } // container evpl } // module huawei-evpl
© 2023 YumaWorks, Inc. All rights reserved.