huawei-bgp-lsp

Inter-AS routing protocol that exchanges Network Layer Reachability Information (NLRI) with other BGP systems.

  • Version: 2020-02-25

    huawei-bgp-lsp@2020-02-25


    
      module huawei-bgp-lsp {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-bgp-lsp";
    
        prefix bgp-lsp;
    
        import huawei-extension {
          prefix ext;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-mpls {
          prefix mpls;
        }
        import huawei-bfd {
          prefix bfd;
        }
        import huawei-routing-policy {
          prefix rtp;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-bgp {
          prefix bgp;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
        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
          "Inter-AS routing protocol that exchanges Network Layer Reachability Information (NLRI) with other BGP systems.";
    
        revision "2020-02-25" {
          description
            "The YANG descriptions are modified according to new standards.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-03-22" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "bgp";
    
        typedef lsp-type {
          type enumeration {
            enum "ingress" {
              value 1;
              description
                "Ingress of the BGP LSP.";
            }
            enum "transit" {
              value 2;
              description
                "Transit node of the BGP LSP.";
            }
            enum "egress" {
              value 4;
              description
                "Egress of the BGP LSP.";
            }
          }
          description "The type of the BGP LSP.";
        }
    
        typedef lsp-frr-type {
          type enumeration {
            enum "primary" {
              value 1;
              description "Primary LSP type.";
            }
            enum "backup" {
              value 2;
              description "Backup LSP type.";
            }
          }
          description
            "The type of the bgpLspFrr.";
        }
    
        typedef label-operation-type {
          type enumeration {
            enum "push" {
              value 0;
              description "Push a label.";
            }
            enum "swap" {
              value 1;
              description "Swap a Label.";
            }
            enum "pop" {
              value 2;
              description "Pop out a label.";
            }
            enum "swappush" {
              value 3;
              description
                "Swap a label and push a label.";
            }
            enum "popgo" {
              value 4;
              description
                "Packets are forwarded based on the next hop directly mapped to the
              label after label popping.";
            }
          }
          description
            "The type of the bgpLabelOperation.";
        }
    
        typedef exp-mode-type {
          type enumeration {
            enum "null" {
              value 0;
              description "Default value.";
            }
            enum "pipe" {
              value 1;
              description
                "The priority of BGP labels is not modified, and the outer label is removed.";
            }
            enum "uniform" {
              value 2;
              description
                "The label priority of intra-AS tunnels is copied to the BGP label.";
            }
          }
          description
            "The type of bgpcommExpMode.";
        }
    
        typedef bgp-bfd-trigger-type {
          type enumeration {
            enum "none" {
              value 0;
              description
                "No policy for establishing BGP BFD sessions is configured.";
            }
            enum "host" {
              value 1;
              description
                "Use host addresses to dynamically establish BGP BFD sessions.";
            }
            enum "ip-prefix" {
              value 2;
              description
                "IP prefix list used to dynamically establish a BFD session to monitor an LDP tunnel.";
            }
          }
          description
            "The type of BGP BFD trigger.";
        }
    
        grouping bgp-pipe-type {
          description "BGP pipe type.";
          leaf ttl-mode {
            type enumeration {
              enum "pipe" {
                value 2;
                description
                  "The priority of BGP labels is not modified, and the outer label is removed.";
              }
              enum "uniform" {
                value 1;
                description
                  "The label priority of intra-AS tunnels is copied to the BGP label.";
              }
            }
            default "pipe";
            description
              "Specifies the TTL mode, The available options are Uniform and Pipe. By default, the mode is Pipe.";
          }
        }  // grouping bgp-pipe-type
    
        grouping tunnel-info-common {
          description
            "Display the information of the vrf which used by this tunnel.";
          container tunnel-vpn-infos {
            config false;
            description
              "List of VPN instances. All VPN instances which use this tunnel.";
            list tunnel-vpn-info {
              key "vrf-name af-type nexthop";
              description
                "Statistics of a VPN instance of this Tunnel.";
              leaf vrf-name {
                type leafref {
                  path
                    "/ni:network-instance/ni:instances/ni:instance/ni:name";
                }
                description
                  "VPN name of a BGP instance.";
              }
    
              leaf af-type {
                type l3vpn:af-type;
                description
                  "Types of the VPN address families.";
              }
    
              leaf nexthop {
                type inet:ip-address-no-zone;
                description
                  "The next hop address used by this tunnel.";
              }
            }  // list tunnel-vpn-info
          }  // container tunnel-vpn-infos
        }  // grouping tunnel-info-common
    
        container bgp-lsp {
          description
            "BGP LSP configuration and query items.";
          container bfd {
            description
              "Configure dynamic BFD for BGP LSP.";
            container parameters {
              description
                "Configure parameters of BFD for BGP LSP.";
              leaf enable {
                when
                  "/mpls:mpls/mpls:common/mpls:global/mpls:mpls-enable='true' and /bfd:bfd";
                type boolean;
                default "false";
                description
                  "Enable/disable dynamic BFD for BGP LSP.";
              }
    
              leaf min-tx-interval {
                when
                  "/mpls:mpls/mpls:common/mpls:global/mpls:mpls-enable='true'";
                type uint32 {
                  range "3..20000";
                }
                units "ms";
                description
                  "Interval at which BFD packets are sent. The value range and default value are controlled by the PAF.";
              }
    
              leaf min-rx-interval {
                when
                  "/mpls:mpls/mpls:common/mpls:global/mpls:mpls-enable='true'";
                type uint32 {
                  range "3..20000";
                }
                units "ms";
                description
                  "Interval at which BFD packets are received. The value range and default value are controlled by the PAF.";
              }
    
              leaf detection-multiplier {
                when
                  "/mpls:mpls/mpls:common/mpls:global/mpls:mpls-enable='true'";
                type uint32 {
                  range "3..50";
                }
                default "3";
                description
                  "BFD detection multiplier.";
              }
    
              leaf trigger {
                when
                  "/mpls:mpls/mpls:common/mpls:global/mpls:mpls-enable='true' and /bfd:bfd";
                type bgp-bfd-trigger-type;
                must
                  "( ../trigger='ip-prefix' and ../trigger-ip-prefix-name ) or not ( ../trigger='ip-prefix' or ../trigger-ip-prefix-name )";
                default "none";
                description
                  "Configure a policy for creating BGP LSP BFD sessions.";
              }
    
              leaf trigger-ip-prefix-name {
                when "../trigger='ip-prefix'";
                type leafref {
                  path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                }
                description
                  "To use an IP prefix list to dynamically create BFD sessions, specify a name of the IP prefix list.";
              }
            }  // container parameters
    
            container sessions {
              config false;
              description
                "List of the sessions of dynamic BFD for BGP LSP.";
              list session {
                key "fec-address out-if-name next-hop index";
                config false;
                description
                  "Statistics of a session of dynamic BFD for BGP LSP.";
                leaf fec-address {
                  type inet:ipv4-address-no-zone;
                  config false;
                  description
                    "Display the FEC address of the session of dynamic BFD for BGP LSP.";
                }
    
                leaf out-if-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  config false;
                  description
                    "Display the outbound interface of a BGP LSP.";
                }
    
                leaf next-hop {
                  type inet:ipv4-address-no-zone;
                  config false;
                  description
                    "Display the next hop of a BGP LSP.";
                }
    
                leaf index {
                  type uint32;
                  config false;
                  description
                    "Display the LSP index of a BGP LSP.";
                }
    
                leaf discriminator {
                  type uint32;
                  config false;
                  description
                    "Display the BFD discriminator of the BFD session of dynamic BFD for BGP LSP.";
                }
    
                leaf state {
                  type enumeration {
                    enum "admin-down" {
                      value 0;
                      description
                        "The BGP LSP BFD session is administratively Down.";
                    }
                    enum "down" {
                      value 1;
                      description
                        "The BGP LSP BFD session is Down.";
                    }
                    enum "init" {
                      value 2;
                      description
                        "The BGP LSP BFD session is in initial state.";
                    }
                    enum "up" {
                      value 3;
                      description
                        "The BGP LSP BFD session is Up.";
                    }
                  }
                  config false;
                  description
                    "Display the BFD session state of dynamic BFD for BGP LSP.";
                }
    
                leaf min-tx-interval {
                  type uint32;
                  units "ms";
                  config false;
                  description
                    "Display the minimum interval at which BFD packets of the session of dynamic BFD for BGP LSP are sent.";
                }
    
                leaf min-rx-interval {
                  type uint32;
                  units "ms";
                  config false;
                  description
                    "Display the minimum interval at which BFD packets of the session of dynamic BFD for BGP LSP are received.";
                }
    
                leaf detection-multiplier {
                  type uint32;
                  config false;
                  description
                    "Display the BFD detection multiplier of the BFD session of dynamic BFD for BGP LSP.";
                }
    
                leaf age {
                  type uint32;
                  units "s";
                  config false;
                  description
                    "Display the BFD session age of dynamic BFD for BGP LSP.";
                }
              }  // list session
            }  // container sessions
          }  // container bfd
    
          container states {
            config false;
            description "List of BGP LSPs.";
            list state {
              key "vrf-name af destination-address prefix-length index type indirect-id frr-type";
              config false;
              description
                "Operational state of BGP LSP.";
              leaf vrf-name {
                type leafref {
                  path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                }
                config false;
                description
                  "VPN name of a BGP instance.";
              }
    
              leaf af {
                type bgp:af-type;
                config false;
                description
                  "Specifies the address family type of a BGP instance.";
              }
    
              leaf destination-address {
                type inet:ip-address-no-zone;
                config false;
                description
                  "Destination address of an LSP.";
              }
    
              leaf prefix-length {
                type uint32 {
                  range "0..128";
                }
                config false;
                description
                  "Prefix length of the destination address of an LSP.";
              }
    
              leaf index {
                type uint32;
                config false;
                description "LSP index.";
              }
    
              leaf type {
                type lsp-type;
                config false;
                description "LSP type.";
              }
    
              leaf indirect-id {
                type string {
                  length "1..50";
                }
                config false;
                description "IndirectID.";
              }
    
              leaf frr-type {
                type lsp-frr-type;
                config false;
                description "FRR role.";
              }
    
              leaf nexthop {
                type inet:ip-address-no-zone;
                config false;
                description
                  "Next hop of an LSP.";
              }
    
              leaf inbound-if-name {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                config false;
                description
                  "Inbound interface of an LSP.";
              }
    
              leaf outbound-if-name {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                config false;
                description
                  "Outbound interface of an LSP.";
              }
    
              leaf mtu {
                type uint32 {
                  range "0..65535";
                }
                config false;
                description "LSP MTU.";
              }
    
              leaf duration {
                type uint32;
                units "s";
                config false;
                description "LSP duration.";
              }
    
              leaf in-label {
                type uint32;
                config false;
                description
                  "In-label of an LSP.";
              }
    
              leaf out-label {
                type uint32;
                config false;
                description
                  "Out-label of an LSP.";
              }
    
              leaf out-tunnel-index {
                type string {
                  length "1..50";
                }
                config false;
                description
                  "Index of an outbound LSP.";
              }
    
              leaf label-operation {
                type label-operation-type;
                config false;
                description
                  "Label operation type.";
              }
    
              leaf qos-priority-mode {
                type exp-mode-type;
                config false;
                description
                  "QoS priority mode of an LSP.";
              }
    
              leaf tunnel-id {
                type string {
                  length "1..50";
                }
                config false;
                description
                  "ID of an outbound LSP.";
              }
    
              leaf route-distinguisher {
                type string {
                  length "3..21";
                }
                config false;
                description
                  "A VPN address family takes effect only after it is configured with an RD. The format of an RD is as follows:
                1. 16-bit AS number:32-bit user-defined number, for example, 101:3. An AS number ranges from 0 to 65535, and a user-defined number ranges from 0 to 4294967295. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0:0.
                2. 32-bit IP address:16-bit user-defined number, for example: 192.168.122.15:1. The IP address ranges from 0.0.0.0 to 255.255.255.255, and the user-defined number ranges from 0 to 65535.
                3. 32-bit AS number:16-bit user-defined number, for example, 10.11:3. An AS number ranges from 0.0 to 65535.65535 or from 0 to 4294967295, and a user-defined number ranges from 0 to 65535. The AS number and user-defined number cannot be both 0s. This means that the RD value cannot be 0.0:0.";
              }
    
              container tunnels {
                config false;
                description
                  "List of tunnel information.";
                list tunnel {
                  key "value";
                  config false;
                  description
                    "Operational state of tunnel information.";
                  leaf value {
                    type string {
                      length "1..50";
                    }
                    config false;
                    description
                      "The tunnel-key.";
                  }
                }  // list tunnel
              }  // container tunnels
            }  // list state
          }  // container states
        }  // container bgp-lsp
    
        augment /mpls:mpls/mpls:common/mpls:global {
          description
            "MPLS BGP global configuration.";
          container bgp-ttl-mode {
            when
              "/mpls:mpls/mpls:common/mpls:global/mpls:mpls-enable='true'";
            description
              "Configure the TTL mode. The available options are uniform and pipe.";
            uses bgp-pipe-type;
          }  // container bgp-ttl-mode
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface/tnlm:tunnel-protocol/tnlm:type/mpls-te:mpls-te/mpls-te:te-tunnel/mpls-te:tunnel-mode/mpls-te:p2p-rsvp-te/mpls-te:rsvp-te {
          description
            "Augment the MPLS rsvp-te model to add L3VPN tunnel infomation.";
          uses tunnel-info-common;
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface/tnlm:tunnel-protocol/tnlm:type/mpls-te:mpls-te/mpls-te:te-tunnel/mpls-te:sr-te {
          description
            "Augment the MPLS sr-te model to add L3VPN tunnel infomation.";
          uses tunnel-info-common;
        }
    
        augment /ni:network-instance/ni:instances/ni:instance/mpls:mpls {
          description
            "Augment the MPLS model to add BGP VPN infomation.";
          container bgp-mpls-lsp {
            when "../../ni:name!='_public_'";
            presence
              "Create MPLS-BGP-VPN instance.";
            description
              "Enable/disable the MPLS-BGP-VPN instance.";
            container bfd {
              description
                "Configure dynamic BFD for BGP LSP.";
              container parameters {
                description
                  "Configure parameters of BFD for BGP LSP.";
                leaf enable {
                  when "/bfd:bfd";
                  type boolean;
                  default "false";
                  description
                    "Enable/disable dynamic BFD for BGP LSP.";
                }
    
                leaf min-tx-interval {
                  type uint32 {
                    range "3..20000";
                  }
                  units "ms";
                  description
                    "Interval at which BFD packets are sent. The value range and default value are controlled by the PAF.";
                }
    
                leaf min-rx-interval {
                  type uint32 {
                    range "3..20000";
                  }
                  units "ms";
                  description
                    "Interval at which BFD packets are received. The value range and default value are controlled by the PAF.";
                }
    
                leaf detection-multiplier {
                  type uint32 {
                    range "3..50";
                  }
                  default "3";
                  description
                    "BFD detection multiplier.";
                }
    
                leaf trigger {
                  when "/bfd:bfd";
                  type bgp-bfd-trigger-type;
                  must
                    "( ../trigger='ip-prefix' and ../trigger-ip-prefix-name ) or not ( ../trigger='ip-prefix' or ../trigger-ip-prefix-name )";
                  default "none";
                  description
                    "Configure a policy for creating BGP LSP BFD sessions.";
                }
    
                leaf trigger-ip-prefix-name {
                  when "../trigger='ip-prefix'";
                  type leafref {
                    path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                  }
                  description
                    "To use an IP prefix list to dynamically create BFD sessions, specify a name of the IP prefix list.";
                }
              }  // container parameters
            }  // container bfd
    
            container bgp-ttl-mode {
              description
                "Configure the TTL mode. The available options are uniform and pipe.";
              uses bgp-pipe-type;
            }  // container bgp-ttl-mode
          }  // container bgp-mpls-lsp
        }
      }  // module huawei-bgp-lsp
    

© 2023 YumaWorks, Inc. All rights reserved.