huawei-mpls-forward

MPLS forward.

  • Version: 2020-06-10

    huawei-mpls-forward@2020-06-10


    
      module huawei-mpls-forward {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-mpls-forward";
    
        prefix mpls-forward;
    
        import huawei-loadbalance {
          prefix loadbalance;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
        import huawei-qos {
          prefix qos;
        }
        import huawei-mpls {
          prefix mpls;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-tunnel-management {
          prefix tnlm;
        }
        import huawei-mpls-te {
          prefix mpls-te;
        }
    
        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 "MPLS forward.";
    
        revision "2020-06-10" {
          description "Adding new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-05-18" {
          description "Updating nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-25" {
          description
            "Modifying some non-standard descriptions.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-27" {
          description
            "Removing the invalid definition of enumeration type and modifying the invalid statements.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-03-27" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "forwarding";
    
        typedef hash-type {
          type enumeration {
            enum "flow" {
              value 194;
              description
                "Load balance based on flow.";
            }
            enum "packet" {
              value 195;
              description
                "Load balance based on packet.";
            }
          }
          description "Hash type.";
        }
    
        typedef l3vpn-ingpipe-mode {
          type enumeration {
            enum "pipe" {
              value 1;
              description "Pipe mode.";
            }
            enum "shortpipe" {
              value 2;
              description "Short pipe mode.";
            }
            enum "uniform" {
              value 3;
              description "Uniform pipe mode.";
            }
          }
          description
            "The mode of the L3VPN ingress pipe mode.";
        }
    
        typedef l3vpn-egpipe-mode {
          type enumeration {
            enum "pipe" {
              value 1;
              description "Pipe mode.";
            }
            enum "shortpipe" {
              value 2;
              description "Short pipe mode.";
            }
            enum "uniform" {
              value 3;
              description "Uniform pipe mode.";
            }
          }
          description
            "The mode of the L3VPN egress pipe mode.";
        }
    
        typedef l3vpn-pipe-mode {
          type enumeration {
            enum "pipe" {
              value 1;
              description "Pipe mode.";
            }
            enum "shortpipe" {
              value 2;
              description "Short pipe mode.";
            }
            enum "uniform" {
              value 3;
              description "Uniform pipe mode.";
            }
          }
          description
            "The mode of the L3VPN pipe mode.";
        }
    
        typedef l3vpn-ttl-mode {
          type enumeration {
            enum "pipe" {
              value 1;
              description "Pipe mode.";
            }
            enum "uniform" {
              value 3;
              description "Uniform pipe mode.";
            }
          }
          description
            "The mode of the L3VPN tunnel.";
        }
    
        typedef l3vpn-service-class {
          type enumeration {
            enum "be" {
              value 0;
              description "BE service class.";
            }
            enum "af1" {
              value 1;
              description "AF1 service class.";
            }
            enum "af2" {
              value 2;
              description "AF2 service class.";
            }
            enum "af3" {
              value 3;
              description "AF3 service class.";
            }
            enum "af4" {
              value 4;
              description "AF4 service class.";
            }
            enum "ef" {
              value 5;
              description "EF service class.";
            }
            enum "cs6" {
              value 6;
              description "CS6 service class.";
            }
            enum "cs7" {
              value 7;
              description "CS7 service class.";
            }
          }
          description
            "The service class of L3VPN.";
        }
    
        typedef l3vpn-color {
          type enumeration {
            enum "green" {
              value 0;
              description "Green.";
            }
            enum "yellow" {
              value 1;
              description "Yellow.";
            }
            enum "red" {
              value 2;
              description "Red.";
            }
          }
          description "The color of L3VPN.";
        }
    
        typedef deep-hash-flag {
          type enumeration {
            enum "l3" {
              value 1;
              description
                "Hashed based on L3 IP.";
            }
          }
          description
            "Deep hash configuration flag.";
        }
    
        typedef deep-hash-fragment {
          type enumeration {
            enum "ip" {
              value 1;
              description
                "Hash-field based on IP.";
            }
            enum "disable" {
              value 3;
              description
                "Hash-field not based on anything.";
            }
          }
          description
            "Deep hash configuration fragment.";
        }
    
        typedef enable-flag {
          type enumeration {
            enum "enable" {
              value 1;
              description "The CFG is enabled.";
            }
            enum "disable" {
              value 0;
              description "The CFG is disabled.";
            }
          }
          description "Enable flag type.";
        }
    
        typedef te-pipe-mode {
          type enumeration {
            enum "pipe" {
              value 1;
              description "Pipe mode.";
            }
            enum "uniform" {
              value 3;
              description "Uniform pipe mode.";
            }
          }
          description "TE pipe mode.";
        }
    
        typedef te-pipe-service-class {
          type enumeration {
            enum "be" {
              value 0;
              description
                "Best effort (EF) service class.";
            }
            enum "af1" {
              value 1;
              description
                "Assured forwarding 1 (AF1) service class.";
            }
            enum "af2" {
              value 2;
              description
                "Assured forwarding 2 (AF2) service class.";
            }
            enum "af3" {
              value 3;
              description
                "Assured forwarding 3 (AF3) service class.";
            }
            enum "af4" {
              value 4;
              description
                "Assured forwarding 4 (AF4) service class.";
            }
            enum "ef" {
              value 5;
              description
                "Expedited forwarding (EF) service class.";
            }
            enum "cs6" {
              value 6;
              description
                "Class selector 6 (CS6) service class.";
            }
            enum "cs7" {
              value 7;
              description
                "Class selector 7 (CS7) service class.";
            }
          }
          description "TE pipe service class.";
        }
    
        typedef te-pipe-color {
          type enumeration {
            enum "green" {
              value 0;
              description "Green.";
            }
            enum "yellow" {
              value 1;
              description "Yellow.";
            }
            enum "red" {
              value 2;
              description "Red.";
            }
          }
          description "TE pipe color.";
        }
    
        typedef check-mode {
          type enumeration {
            enum "ip" {
              value 291;
              description
                "The check mode is IP.";
            }
            enum "label-contained-length" {
              value 292;
              description
                "The check mode is label-contained-length.";
            }
          }
          description "Check mode.";
        }
    
        typedef enl-exp-mode {
          type enumeration {
            enum "pipe" {
              value 2;
              description "Pipe mode.";
            }
            enum "uniform" {
              value 1;
              description "Uniform pipe mode.";
            }
          }
          description
            "Explicit null label EXP mode.";
        }
    
        typedef enl-ttl-mode {
          type enumeration {
            enum "pipe" {
              value 1;
              description "Pipe mode.";
            }
            enum "uniform" {
              value 0;
              description "Uniform pipe mode.";
            }
          }
          description
            "Explicit null label TTL mode.";
        }
    
        typedef ela-exp-mode {
          type enumeration {
            enum "pipe" {
              value 2;
              description "Pipe mode.";
            }
            enum "uniform" {
              value 1;
              description "Uniform pipe mode.";
            }
          }
          description "Entropy label EXP mode.";
        }
    
        typedef ela-ttl-mode {
          type enumeration {
            enum "pipe" {
              value 1;
              description "Pipe mode.";
            }
            enum "uniform" {
              value 0;
              description "Uniform pipe mode.";
            }
          }
          description "Entropy label TTL mode.";
        }
    
        augment /loadbalance:loadbalance {
          description
            "MPLS forward configuration to the load balance module.";
          container mpls-hashpacket {
            description
              "Configure load balance based on packet.";
            leaf hash-type {
              type hash-type;
              default "flow";
              description "Load balance mode.";
            }
          }  // container mpls-hashpacket
    
          container mpls-intfmtu {
            description
              "Configure interface MTU check mode.";
            leaf chkmode {
              type check-mode;
              default "ip";
              description
                "Check mode configuration.";
            }
          }  // container mpls-intfmtu
    
          container mpls-loadblc-elawords {
            description
              "Configure MPLS entropy label load balance control word enable.";
            leaf elawords-enable {
              type enable-flag;
              default "disable";
              description
                "MPLS entropy label load balance control word enable value.";
            }
          }  // container mpls-loadblc-elawords
    
          container p2mp-load-balance-num {
            description
              "Configure P2MP trunk load balance.";
            leaf number {
              type uint32 {
                range "2..64";
              }
              default "16";
              description
                "P2MP trunk load balance number.";
            }
          }  // container p2mp-load-balance-num
        }
    
        augment /ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af {
          description
            "MPLS forward configuration to the L3VPN module.";
          container vrfpipe {
            description "Configure L3VPN pipe.";
            leaf split-mode {
              type boolean;
              must
                "((../split-mode='false' and ../pipe-mode and not(../ingress-pipe-mode) and not(../egress-pipe-mode)) or (../split-mode='true' and not(../pipe-mode) and ../ingress-pipe-mode and ../egress-pipe-mode))";
              default "false";
              description
                "Enable/disable pipe mode.";
            }
    
            leaf pipe-mode {
              when "../split-mode='false'";
              type l3vpn-pipe-mode;
              default "uniform";
              description "Pipe mode.";
            }
    
            leaf ingress-pipe-mode {
              when "../split-mode='true'";
              type l3vpn-ingpipe-mode;
              default "uniform";
              description "Ingress pipe mode.";
            }
    
            leaf service-class {
              when
                "(../pipe-mode='pipe' or ../pipe-mode='shortpipe' or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')";
              type l3vpn-service-class;
              default "be";
              description "Service class.";
            }
    
            leaf color {
              when
                "(../pipe-mode='pipe' or ../pipe-mode='shortpipe'  or ../ingress-pipe-mode='pipe' or ../ingress-pipe-mode='shortpipe')";
              type l3vpn-color;
              default "green";
              description "Color.";
            }
    
            leaf egress-pipe-mode {
              when "../split-mode='true'";
              type l3vpn-egpipe-mode;
              default "uniform";
              description "Egress pipe mode.";
            }
    
            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";
              }
              default "default";
              description "DS domain name.";
            }
          }  // container vrfpipe
    
          container vpn-ttlmode {
            description "Configure TTL mode.";
            leaf ttlmode {
              type l3vpn-ttl-mode;
              default "pipe";
              description "TTL mode value.";
            }
          }  // container vpn-ttlmode
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface {
          description
            "MPLS forward configuration to the ifm module.";
          container deephashcfg {
            when
              "../ifm:type='Ethernet' or ../ifm:type='FlexE' or ../ifm:type='GigabitEthernet' or ../ifm:type='100GE' or ../ifm:type='10GE' or ../ifm:type='4x10GE' or ../ifm:type='10x10GE' or ../ifm:type='3x40GE' or ../ifm:type='4x25GE' or ../ifm:type='25GE' or ../ifm:type='50GE' or ../ifm:type='50|100GE' or ../ifm:type='XGigabitEthernet' or ../ifm:type='Pos' or ../ifm:type='40GE' or ../ifm:type='MEth' or ../ifm:type='400GE' or ../ifm:type='GEBrief' or ../ifm:type='200GE'";
            description
              "Configure MPLS deep hash mode.";
            leaf fragment-field {
              type deep-hash-fragment;
              default "disable";
              description
                "MPLS deep hash fields.";
            }
    
            leaf deepmplshash {
              type deep-hash-flag;
              default "l3";
              description
                "MPLS deep hash value.";
            }
          }  // container deephashcfg
    
          container if-poison-reverse {
            when
              "../ifm:type='Ethernet' or ../ifm:type='FlexE' or ../ifm:type='GigabitEthernet' or ../ifm:type='100GE' or ../ifm:type='10GE' or ../ifm:type='4x10GE' or ../ifm:type='10x10GE' or ../ifm:type='3x40GE' or ../ifm:type='4x25GE' or ../ifm:type='25GE' or ../ifm:type='XGigabitEthernet' or ../ifm:type='Eth-Trunk' or ../ifm:type='Ip-Trunk' or ../ifm:type='400GE' or ../ifm:type='Pos' or ../ifm:type='40GE' or ../ifm:type='MEth' or ../ifm:type='GEBrief' or ../ifm:type='200GE' or ../ifm:type='50|100GE' or ../ifm:type='50GE'";
            presence
              "Enable poison reverse on an interface";
            description
              "Configure MPLS poison reverse on the interface.";
          }  // container if-poison-reverse
    
          container if-p2mp-load-balance {
            when
              "../ifm:type='Eth-Trunk' or ../ifm:type='Ip-Trunk'";
            description
              "Configure Trunk-enable.";
            leaf loadbanlance-enable {
              type enable-flag;
              default "disable";
              description "Trunk enable flag.";
            }
    
            leaf root-loadbanlance-enable {
              type enable-flag;
              default "disable";
              description
                "Root node trunk enable flag.";
            }
    
            leaf root-loadbanlance-spmsidis {
              when
                "../root-loadbanlance-enable='enable' or /mpls:mpls/mpls-forward:p2mp-forceload/mpls-forward:forceload-enable='enable'";
              type enable-flag;
              default "disable";
              description
                "Root node S-PMSI trunk disable flag.";
            }
          }  // container if-p2mp-load-balance
    
          container bgp-localifnet-traffic {
            when
              "../ifm:type='GigabitEthernet' or ../ifm:type='XGigabitEthernet' or ../ifm:type='10GE' or ../ifm:type='25GE' or ../ifm:type='40GE' or ../ifm:type='50GE' or ../ifm:type='100GE' or ../ifm:type='200GE' or ../ifm:type = 'FlexE' or ../ifm:type='400GE' or ../ifm:type='50|100GE' or ../ifm:type='Ethernet' or ../ifm:type='Eth-Trunk' or ../ifm:type='Ip-Trunk' or ../ifm:type='Pos' or ../ifm:type='4x10GE' or ../ifm:type='10x10GE' or ../ifm:type='3x40GE' or ../ifm:type='4x25GE' or ../ifm:type='Mp-group' or ../ifm:type='Serial' or ../ifm:class='sub-interface'";
            description
              "Configure the HQoS function for the traffic carried by a BGP local IFNET tunnel on an interface.";
            leaf localifnet-enable {
              type enable-flag;
              default "disable";
              description "Traffic enable flag.";
            }
          }  // container bgp-localifnet-traffic
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface/tnlm:tunnel-protocol/tnlm:type/mpls-te:mpls-te/mpls-te:te-tunnel {
          description
            "MPLS forward configuration to the MPLS TE tunnel module.";
          container mplstunnelpipe {
            description
              "Configure TE pipe mode.";
            leaf pipe-mode {
              type te-pipe-mode;
              default "uniform";
              description
                "Specifies the pipe mode of TE tunnel.";
            }
    
            leaf service-class {
              when "not(../pipe-mode='uniform')";
              type te-pipe-service-class;
              default "be";
              description
                "PHB of ingress packet.";
            }
    
            leaf color {
              when "not(../pipe-mode='uniform')";
              type te-pipe-color;
              default "green";
              description
                "Color of ingress packet.";
            }
          }  // container mplstunnelpipe
    
          container mpls-tunnel-service-class {
            description
              "Configure specifies the service class of te tunnel.";
            leaf default-enable {
              type boolean;
              must
                "(../default-enable='false') or not(../af1-enable='true' or ../af2-enable='true' or ../af3-enable='true' or ../af4-enable='true' or ../be-enable='true' or ../cs6-enable='true' or ../cs7-enable='true' or ../ef-enable='true')";
              default "false";
              description
                "Enable/disable default service class.";
            }
    
            leaf be-enable {
              type boolean;
              must
                "../be-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable BE service class.";
            }
    
            leaf af1-enable {
              type boolean;
              must
                "../af1-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable AF1 service class.";
            }
    
            leaf af2-enable {
              type boolean;
              must
                "../af2-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable AF2 service class.";
            }
    
            leaf af3-enable {
              type boolean;
              must
                "../af3-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable AF3 service class.";
            }
    
            leaf af4-enable {
              type boolean;
              must
                "../af4-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable AF4 service class.";
            }
    
            leaf ef-enable {
              type boolean;
              must
                "../ef-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable EF service class.";
            }
    
            leaf cs6-enable {
              type boolean;
              must
                "../cs6-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable CS6 service class.";
            }
    
            leaf cs7-enable {
              type boolean;
              must
                "../cs7-enable='false' or ../default-enable='false'";
              default "false";
              description
                "Enable/disable CS7 service class.";
            }
          }  // container mpls-tunnel-service-class
    
          container mpls-tunnel-dscp {
            when
              "../mpls-te:common-attributes/mpls-te:signal-protocol='segment-routing'";
            description "Configure DSCP value.";
            leaf ipv4-defalut {
              type boolean;
              default "false";
              description
                "Enable/disable default of IPv4.";
            }
    
            leaf ipv6-defalut {
              type boolean;
              default "false";
              description
                "Enable/disable default of IPv6.";
            }
    
            leaf ipv4-dscp-value {
              type string {
                length "1..512";
              }
              must
                "../ipv4-dscp-value='*' or ../ipv4-defalut='false'";
              default "*";
              description
                "IPv4 DSCP, in the format of 0,1,2,3-10,63. A DSCP value is an integer ranging from 0 to 63.Entering an asterisk (*) deletes DSCP configuration.";
            }
    
            leaf ipv6-dscp-value {
              type string {
                length "1..512";
              }
              must
                "../ipv6-dscp-value='*' or ../ipv6-defalut='false'";
              default "*";
              description
                "IPv6 DSCP, in the format of 0,1,2,3-10,63. A DSCP value is an integer ranging from 0 to 63.Entering an asterisk (*) deletes DSCP configuration.";
            }
          }  // container mpls-tunnel-dscp
        }
    
        augment /mpls:mpls {
          description
            "MPLS forward configuration to the MPLS module.";
          container ds-enhance {
            description
              "Configure global shortpipe.";
            leaf enhance-enable {
              type enable-flag;
              default "disable";
              description
                "Shortpipe global enhance enable.";
            }
          }  // container ds-enhance
    
          container p2mp-fastswitch {
            description
              "Configure P2MP fast switch.";
            leaf fastswitch-enable {
              type enable-flag;
              default "disable";
              description
                "P2MP global fast switch.";
            }
          }  // container p2mp-fastswitch
    
          container p2mp-forceload {
            description
              "Configure P2MP forceload.";
            leaf forceload-enable {
              type enable-flag;
              default "disable";
              description
                "P2MP force loadbalance.";
            }
          }  // container p2mp-forceload
    
          container p2mp-frrwtrtime {
            description
              "Configure P2MP FRR WTR for forwarding plane.";
            leaf frrwtrtime-forpdt {
              type uint32 {
                range "5..600";
              }
              units "s";
              default "5";
              description
                "P2MP FRR WTR for forwarding plane.";
            }
          }  // container p2mp-frrwtrtime
    
          container te-reverse-path-forwarding {
            description
              "Configure MPLS TE global RPF capability.";
            leaf te-rpf-enable {
              type enable-flag;
              default "enable";
              description
                "MPLS TE RPF capability enable.";
            }
          }  // container te-reverse-path-forwarding
    
          container bgp-separate {
            description
              "Configure MPLS multiple hop disjoint.";
            leaf bgpsepen {
              type boolean;
              default "false";
              description
                "Enable/disable MPLS multi-tunnel encapsulation decoupling.";
            }
          }  // container bgp-separate
    
          container ldp-separate {
            description
              "Configure MPLS global convergence enhancement.";
            leaf ldpsepen {
              type boolean;
              default "false";
              description
                "Enable/disable LDP-SRBE convergence enhancement.";
            }
          }  // container ldp-separate
    
          container te-multiprot {
            description
              "Configure MPLS TE global multi-protect fast switch.";
            leaf multi-protect-enable {
              type boolean;
              default "false";
              description
                "Enable/disable MPLS TE multi-protect fast switch.";
            }
          }  // container te-multiprot
    
          container active-tnl {
            config false;
            description
              "Statistics of MPLS TE LSP state INFOs.";
            list tnlactinfo {
              key "interfacename";
              config false;
              description
                "Statistics of MPLS TE LSP state INFOs.";
              leaf interfacename {
                type pub-type:if-name;
                config false;
                description
                  "Specifies an MPLS TE interface name.";
              }
    
              leaf activepath {
                type string {
                  length "1..30";
                }
                config false;
                description
                  "MPLS TE LSP forward type.";
              }
    
              leaf tunnelid {
                type pub-type:hex-binary;
                config false;
                description "Tunnel ID.";
              }
    
              leaf outinterface {
                type string {
                  length "1..30";
                }
                config false;
                description
                  "The tunnel out interface.";
              }
            }  // list tnlactinfo
          }  // container active-tnl
    
          container disp-convergence-mode {
            config false;
            description
              "Operational state of convergence mode state info.";
            leaf is-enable {
              type boolean;
              default "false";
              config false;
              description
                "Convergence mode enable check.";
            }
          }  // container disp-convergence-mode
        }
    
        augment /mpls:mpls/mpls:common/mpls:global {
          when
            "/mpls:mpls/mpls:common/mpls:global/mpls:mpls-enable='true'";
          description
            "MPLS forward configuration to the MPLS module.";
          container exp-ttl-mode {
            description
              "Configure pipe mode for explicit null label.";
            leaf exppipemode {
              type enl-exp-mode;
              default "uniform";
              description
                "Pipe mode of EXP for explicit null label.";
            }
    
            leaf ttlpipemode {
              type enl-ttl-mode;
              default "uniform";
              description
                "Pipe mode of TTL for explicit null label.";
            }
          }  // container exp-ttl-mode
    
          container entropy-label-mode {
            description
              "Configure pipe mode for entropy label.";
            leaf exp-pipemode {
              type ela-exp-mode;
              default "uniform";
              description
                "Pipe mode of EXP for entropy label.";
            }
    
            leaf ttl-pipemode {
              type ela-ttl-mode;
              default "uniform";
              description
                "Pipe mode of TTL for entropy label.";
            }
          }  // container entropy-label-mode
        }
    
        augment /mpls:mpls/mpls:common {
          description
            "MPLS forward configuration to the MPLS module.";
          container mpls-forward {
            description
              "Configure MPLS forward configuration to the MPLS module.";
            container static-label-only {
              description
                "Configure the parameters related to the exclusive static label range. The function takes effect after the device is restarted.";
              leaf max-label {
                type uint32 {
                  range "2048..15999";
                }
                description
                  "The static label in the exclusive range ranges from 16 to the configured value. The labels that exceed the range can be used by both static and dynamic services.";
              }
            }  // container static-label-only
          }  // container mpls-forward
        }
      }  // module huawei-mpls-forward
    

© 2023 YumaWorks, Inc. All rights reserved.