huawei-nvo3

Management for data center network virtualization over Layer 3.

  • Version: 2021-08-12

    huawei-nvo3@2021-08-12


    
      module huawei-nvo3 {
    
        yang-version 1;
    
        namespace "urn:huawei:yang:huawei-nvo3";
    
        prefix nvo3;
    
        import huawei-bd {
          prefix bd;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-evpl {
          prefix evpl;
        }
    
        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 for data center network virtualization over Layer 3.";
    
        revision "2021-08-12" {
          description
            "Modify the description of leaf source-vtep-ip.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-06" {
          description
            "The modifications in the schema file are synchronized to the YANG file.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-03-01" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "nvo3";
    
        typedef vni-state {
          type enumeration {
            enum "down" {
              value 0;
              description "The state is down.";
            }
            enum "up" {
              value 1;
              description "The state is up.";
            }
          }
          description "The state for VNI.";
        }
    
        typedef tunnel-type {
          type enumeration {
            enum "dynamic" {
              value 0;
              description
                "Learning via protocols.";
            }
            enum "static" {
              value 1;
              description "Created by users.";
            }
          }
          description "VXLAN tunnel type.";
        }
    
        typedef tunnel-mode {
          type enumeration {
            enum "default-mode" {
              value 0;
              description "Default mode.";
            }
            enum "cu-mode" {
              value 1;
              description
                "Control-User separation mode.";
            }
          }
          description "VXLAN tunnel mode.";
        }
    
        typedef peer-learning-type {
          type enumeration {
            enum "peer" {
              value 1;
              description
                "Learning peers for multicast via BGP.";
            }
          }
          description
            "The type of peers Learning via BGP.";
        }
    
        typedef nqa-state-type {
          type enumeration {
            enum "unknown" {
              value 0;
              description
                "The NQA state is unknown.";
            }
            enum "down" {
              value 1;
              description
                "The NQA state is down.";
            }
            enum "up" {
              value 2;
              description "The NQA state is up.";
            }
          }
          description "The NQA state.";
        }
    
        typedef preference-type {
          type enumeration {
            enum "primary" {
              value 1;
              description "Primary enable.";
            }
            enum "secondary" {
              value 2;
              description "Secondary enable.";
            }
            enum "bypass" {
              value 4;
              description "Bypass enable.";
            }
          }
          description "Preference type.";
        }
    
        typedef ipv6-preference-type {
          type enumeration {
            enum "primary" {
              value 1;
              description "Primary enable.";
            }
            enum "secondary" {
              value 2;
              description "Secondary enable.";
            }
          }
          description "Preference type.";
        }
    
        container nvo3 {
          description "Management of NVO3.";
          container vni-instances {
            description
              "List of virtual extensible local area network.";
            list vni-instance {
              key "vni source-nve";
              description
                "Configure the information of virtual extensible local area network.";
              leaf vni {
                type uint32 {
                  range "1..16777215";
                }
                description
                  "VXLAN network identifier.";
              }
    
              leaf source-nve {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Nve'";
                description
                  "The name of interface NVE, as VXLAN tunnel source point.";
              }
    
              leaf state {
                type vni-state;
                config false;
                description
                  "The state of the VNI. When the VTEP address in the VNI is reachable, the state is up, the opposite is down.";
              }
    
              leaf protocol-bgp {
                type peer-learning-type;
                description
                  "Learning VTEPs via BGP for communication in a same VNI.";
              }
    
              container static-peers {
                description
                  "List of VTEPs created by users for multicast in a same VNI.";
                list static-peer {
                  key "address";
                  description
                    "Configure VTEP by users for multicast.";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    description
                      "The address of VTEP.";
                  }
                }  // list static-peer
              }  // container static-peers
    
              container static-ipv6-peers {
                description
                  "List of VTEPs created by users for multicast in a same VNI.";
                list static-ipv6-peer {
                  key "address";
                  description
                    "Configure VTEP by users for multicast.";
                  leaf address {
                    type inet:ipv6-address-no-zone;
                    description
                      "The IPv6 address of VTEP.";
                  }
                }  // list static-ipv6-peer
              }  // container static-ipv6-peers
    
              container static-evpl-peers {
                description
                  "List of VTEPs created by users for ethernet virtual private line in the same VNI.";
                list static-evpl-peer {
                  key "address";
                  max-elements 1;
                  description
                    "Configure VTEP by users for ethernet virtual private line.";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    must
                      "(not(../../../static-peers/static-peer) and not(../../../protocol-bgp)) or not(../address)";
                    description
                      "The address of VTEP.";
                  }
    
                  leaf preference {
                    ext:operation-exclude "update|delete";
                    type preference-type;
                    default "primary";
                    description
                      "The preference of VXLAN tunnel.";
                  }
                }  // list static-evpl-peer
              }  // container static-evpl-peers
    
              container static-evpl-ipv6-peers {
                description
                  "List of IPv6 VTEPs created by users for ethernet virtual private line in the same VNI.";
                list static-evpl-ipv6-peer {
                  key "address";
                  max-elements 1;
                  description
                    "Configure IPv6 VTEP by users for ethernet virtual private line.";
                  leaf address {
                    type inet:ipv6-address-no-zone;
                    description
                      "The IPv6 address of VTEP.";
                  }
    
                  leaf preference {
                    ext:operation-exclude "update|delete";
                    type ipv6-preference-type;
                    default "primary";
                    description
                      "The preference of VXLAN6 tunnel.";
                  }
                }  // list static-evpl-ipv6-peer
              }  // container static-evpl-ipv6-peers
            }  // list vni-instance
          }  // container vni-instances
    
          container vni-labels {
            description
              "List of VXLAN network identifiers.";
            list vni-label {
              key "vni";
              description
                "Configure VXLAN network identifier.";
              leaf vni {
                type uint32 {
                  range "1..16777215";
                }
                description
                  "VXLAN network identifier.";
              }
    
              container statistics {
                description
                  "Configure VNI traffic statistics.";
                leaf enable {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable VNI traffic statistics.";
                }
    
                container collections {
                  when "../enable='true'";
                  config false;
                  description
                    "Statistics of VNI traffic statistics collection.";
                  leaf send-bits-rate {
                    type uint64;
                    units "bit/s";
                    config false;
                    description
                      "Number of send bits per second.";
                  }
    
                  leaf send-pkts-rate {
                    type uint64;
                    units "pps";
                    config false;
                    description
                      "Number of send packets per second.";
                  }
    
                  leaf send-unicast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of send unicast packets.";
                  }
    
                  leaf send-multicast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of send multicast packets.";
                  }
    
                  leaf send-broadcast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of send broadcast packets.";
                  }
    
                  leaf send-total-bytes {
                    type uint64;
                    units "Byte";
                    config false;
                    description
                      "Total number of send bytes.";
                  }
    
                  leaf send-total-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Total number of send packets.";
                  }
    
                  leaf receive-bits-rate {
                    type uint64;
                    units "bit/s";
                    config false;
                    description
                      "Number of receive bits per second.";
                  }
    
                  leaf receive-pkts-rate {
                    type uint64;
                    units "pps";
                    config false;
                    description
                      "Number of receive packets per second.";
                  }
    
                  leaf receive-unicast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of receive unicast packets.";
                  }
    
                  leaf receive-multicast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of receive multicast packets.";
                  }
    
                  leaf receive-broadcast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of receive broadcast packets.";
                  }
    
                  leaf receive-total-bytes {
                    type uint64;
                    units "Byte";
                    config false;
                    description
                      "Total number of receive bytes.";
                  }
    
                  leaf receive-total-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Total number of receive packets.";
                  }
    
                  leaf drop-unicast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of discarded unicast packets.";
                  }
    
                  leaf drop-multicast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of discarded multicast packets.";
                  }
    
                  leaf drop-broadcast-pkts {
                    type uint64;
                    units "packet";
                    config false;
                    description
                      "Number of discarded broadcast packets.";
                  }
                }  // container collections
              }  // container statistics
    
              container qos-profile-applys {
                description
                  "List of configure QoS profile application.";
                list qos-profile-apply {
                  key "direction";
                  description
                    "Configure QoS profile application.";
                  leaf direction {
                    type qos:qos-direction-type;
                    description "Direction.";
                  }
    
                  leaf name {
                    ext:operation-exclude "update" {
                      description "After the configuration is created, the node cannot be modified.";
                    }
                    type leafref {
                      path "/qos:qos/qos:queue-scheduler-template/qos:profiles/qos:profile/qos:name";
                    }
                    must
                      "/qos:qos/qos:queue-scheduler-template/qos:profiles/qos:profile[qos:name=current()]/qos:mode='normal'";
                    mandatory true;
                    description
                      "QoS profile name.";
                  }
                }  // list qos-profile-apply
              }  // container qos-profile-applys
            }  // list vni-label
          }  // container vni-labels
    
          container vteps {
            config false;
            description "Statistics of VTEPs.";
            container peers {
              config false;
              description
                "List of VTEPs for multicast in a same VNI.";
              list peer {
                key "vni source destination";
                config false;
                description
                  "Operational data of VTEPs for multicast with the same VNI.";
                leaf vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  config false;
                  description
                    "VXLAN network identifier.";
                }
    
                leaf source {
                  type inet:ip-address-no-zone;
                  config false;
                  description
                    "The address of VXLAN tunnel source point.";
                }
    
                leaf destination {
                  type inet:ip-address-no-zone;
                  config false;
                  description
                    "The address of VTEP.";
                }
    
                leaf type {
                  type tunnel-type;
                  config false;
                  description
                    "The type of VXLAN tunnel.";
                }
    
                leaf out-vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  config false;
                  description
                    "VXLAN network identifier for mapping.";
                }
              }  // list peer
            }  // container peers
    
            container cu-peers {
              config false;
              description
                "List of VNI Peers Table of CU Mode.";
              list cu-peer {
                key "vni source destination";
                description
                  "Operational data of VNI Peer Table of CU Mode.";
                leaf vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "The identification of VXLAN tunnel.";
                }
    
                leaf source {
                  type inet:ip-address-no-zone;
                  description
                    "The address of VXLAN tunnel source point.";
                }
    
                leaf destination {
                  type inet:ip-address-no-zone;
                  description
                    "The address of VTEP.";
                }
    
                leaf type {
                  type tunnel-type;
                  description
                    "VXLAN tunnel type.";
                }
    
                leaf out-vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "VXLAN network identifier for mapping.";
                }
    
                leaf nqa-state {
                  type nqa-state-type;
                  description
                    "The NQA state:unknown, down or up.";
                }
    
                leaf packet-loss-ratio {
                  type uint8 {
                    range "0..100";
                  }
                  units "%";
                  description
                    "The NQA packet loss ratio.";
                }
              }  // list cu-peer
            }  // container cu-peers
    
            container evpl-peers {
              config false;
              description
                "List of VTEPs for ethernet virtual private line in a same VNI.";
              list evpl-peer {
                key "id";
                description
                  "Operational data of VTEPs for Ethernet virtual private lines with the same VNI.";
                leaf id {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "The identification of the EVPL instance.";
                }
    
                leaf vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "Local VNI for communication.";
                }
    
                leaf source {
                  type inet:ip-address-no-zone;
                  description
                    "The address of VXLAN tunnel source point.";
                }
    
                leaf ipv6-source {
                  type inet:ipv6-address-no-zone;
                  description
                    "The IPv6 address of VXLAN tunnel source point.";
                }
    
                leaf peer {
                  type inet:ip-address-no-zone;
                  description
                    "The address of primary VTEP.";
                }
    
                leaf out-vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "Primary VNI for mapping.";
                }
    
                leaf backup-peer {
                  type inet:ip-address-no-zone;
                  description
                    "The address of backup VTEP.";
                }
    
                leaf backup-out-vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "Backup VNI for mapping.";
                }
    
                leaf bypass-peer {
                  type inet:ip-address-no-zone;
                  description
                    "The address of bypass VTEP.";
                }
    
                leaf bypass-out-vni {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "Bypass VNI for mapping.";
                }
              }  // list evpl-peer
            }  // container evpl-peers
          }  // container vteps
    
          container global-attribute {
            description
              "Configure global attribute of VXLAN.";
            leaf exact-sub-enable {
              type boolean;
              default "false";
              description
                "Enable/disable exact route subscribe.";
            }
          }  // container global-attribute
    
          container tunnels {
            config false;
            description
              "List of VXLAN tunnel information.";
            list tunnel {
              key "id";
              config false;
              description
                "Statistics of VXLAN tunnels.";
              leaf id {
                type uint32 {
                  range "1..4294967295";
                }
                config false;
                description
                  "The identification of VXLAN tunnel.";
              }
    
              leaf source {
                ext:support-filter "true";
                type inet:ip-address-no-zone;
                config false;
                description
                  "The address of VXLAN tunnel source point.";
              }
    
              leaf destination {
                ext:support-filter "true";
                type inet:ip-address-no-zone;
                config false;
                description
                  "The address of VTEP.";
              }
    
              leaf mode {
                ext:support-filter "true";
                type tunnel-mode;
                config false;
                description "VXLAN tunnel mode.";
              }
    
              leaf state {
                type vni-state;
                config false;
                description
                  "VXLAN tunnel state. When the address of VTEP is reachable, the state is up, otherwise is down.";
              }
    
              leaf type {
                type tunnel-type;
                config false;
                description "VXLAN tunnel type.";
              }
    
              leaf up-time {
                type string {
                  length "1..10";
                }
                config false;
                description
                  "The continuous time as VXLAN tunnel is reachable.";
              }
    
              leaf vpn-name {
                ext:support-filter "true";
                type string {
                  length "1..31";
                }
                description "VPN instance name.";
              }
            }  // list tunnel
          }  // container tunnels
        }  // container nvo3
      }  // module huawei-nvo3
    

© 2023 YumaWorks, Inc. All rights reserved.