huawei-evpl

Management of Ethernet virtual private line.

  • Version: 2020-07-21

    huawei-evpl@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.