netconfcentral logo

ietf-bgp-types@2017-10-17



  module ietf-bgp-types {

    yang-version 1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-bgp-types";

    prefix bgp-types;

    import ietf-inet-types {
      prefix inet;
    }

    organization "IETF IDR Working Group";

    contact
      "WG Web:   <http://tools.ietf.org/wg/idr>
     WG List:  <idr@ietf.org>

     Editor:  Mahesh Jethanandani (mjethanandani@gmail.com)
     Authors: Keyur Patel,
              Mahesh Jethanandani,
              Susan Hares";

    description
      "This module contains general data definitions for use in BGP
    policy. It can be imported by modules that make use of BGP
    attributes";

    revision "2017-10-17" {
      description "Initial Version";
      reference
        "RFC XXX, BGP Model for Service Provider Network.";

    }


    identity BGP_CAPABILITY {
      base 
      description
        "Base identity for a BGP capability";
    }

    identity MPBGP {
      base BGP_CAPABILITY;
      description
        "Multi-protocol extensions to BGP";
      reference
        "RFC2858";

    }

    identity ROUTE_REFRESH {
      base BGP_CAPABILITY;
      description
        "The BGP route-refresh functionality";
      reference
        "RFC2918";

    }

    identity ASN32 {
      base BGP_CAPABILITY;
      description
        "4-byte (32-bit) AS number functionality";
      reference
        "RFC6793";

    }

    identity GRACEFUL_RESTART {
      base BGP_CAPABILITY;
      description
        "Graceful restart functionality";
      reference
        "RFC4724";

    }

    identity ADD_PATHS {
      base BGP_CAPABILITY;
      description "BGP add-paths";
      reference
        "draft-ietf-idr-add-paths";

    }

    identity AFI_SAFI_TYPE {
      base 
      description
        "Base identity type for AFI,SAFI tuples for BGP-4";
      reference
        "RFC4760 - multiprotocol extensions for BGP-4";

    }

    identity IPV4_UNICAST {
      base AFI_SAFI_TYPE;
      description
        "IPv4 unicast (AFI,SAFI = 1,1)";
      reference
        "RFC4760";

    }

    identity IPV6_UNICAST {
      base AFI_SAFI_TYPE;
      description
        "IPv6 unicast (AFI,SAFI = 2,1)";
      reference
        "RFC4760";

    }

    identity IPV4_LABELED_UNICAST {
      base AFI_SAFI_TYPE;
      description
        "Labeled IPv4 unicast (AFI,SAFI = 1,4)";
      reference
        "RFC3107";

    }

    identity IPV6_LABELED_UNICAST {
      base AFI_SAFI_TYPE;
      description
        "Labeled IPv6 unicast (AFI,SAFI = 2,4)";
      reference
        "RFC3107";

    }

    identity L3VPN_IPV4_UNICAST {
      base AFI_SAFI_TYPE;
      description
        "Unicast IPv4 MPLS L3VPN (AFI,SAFI = 1,128)";
      reference
        "RFC4364";

    }

    identity L3VPN_IPV6_UNICAST {
      base AFI_SAFI_TYPE;
      description
        "Unicast IPv6 MPLS L3VPN (AFI,SAFI = 2,128)";
      reference
        "RFC4659";

    }

    identity L3VPN_IPV4_MULTICAST {
      base AFI_SAFI_TYPE;
      description
        "Multicast IPv4 MPLS L3VPN (AFI,SAFI = 1,129)";
      reference
        "RFC6514";

    }

    identity L3VPN_IPV6_MULTICAST {
      base AFI_SAFI_TYPE;
      description
        "Multicast IPv6 MPLS L3VPN (AFI,SAFI = 2,129)";
      reference
        "RFC6514";

    }

    identity L2VPN_VPLS {
      base AFI_SAFI_TYPE;
      description
        "BGP-signalled VPLS (AFI,SAFI = 25,65)";
      reference
        "RFC4761";

    }

    identity L2VPN_EVPN {
      base AFI_SAFI_TYPE;
      description
        "BGP MPLS Based Ethernet VPN (AFI,SAFI = 25,70)";
    }

    identity BGP_WELL_KNOWN_STD_COMMUNITY {
      base 
      description
        "Reserved communities within the standard community space
      defined by RFC1997. These communities must fall within the
      range 0x00000000 to 0xFFFFFFFF";
      reference
        "RFC1997";

    }

    identity NO_EXPORT {
      base BGP_WELL_KNOWN_STD_COMMUNITY;
      description
        "Do not export NLRI received carrying this community outside
      the bounds of this autonomous system, or this confederation if
      the local autonomous system is a confederation member AS. This
      community has a value of 0xFFFFFF01.";
      reference
        "RFC1997";

    }

    identity NO_ADVERTISE {
      base BGP_WELL_KNOWN_STD_COMMUNITY;
      description
        "All NLRI received carrying this community must not be
      advertised to other BGP peers. This community has a value of
      0xFFFFFF02.";
      reference
        "RFC1997";

    }

    identity NO_EXPORT_SUBCONFED {
      base BGP_WELL_KNOWN_STD_COMMUNITY;
      description
        "All NLRI received carrying this community must not be
      advertised to external BGP peers - including over confederation
      sub-AS boundaries. This community has a value of 0xFFFFFF03.";
      reference
        "RFC1997";

    }

    identity NOPEER {
      base BGP_WELL_KNOWN_STD_COMMUNITY;
      description
        "An autonomous system receiving NLRI tagged with this community
      is advised not to readvertise the NLRI to external bi-lateral
      peer autonomous systems. An AS may also filter received NLRI
      from bilateral peer sessions when they are tagged with this
      community value";
      reference
        "RFC3765";

    }

    typedef bgp-session-direction {
      type enumeration {
        enum "INBOUND" {
          value 0;
          description
            "Refers to all NLRI received from the BGP peer";
        }
        enum "OUTBOUND" {
          value 1;
          description
            "Refers to all NLRI advertised to the BGP peer";
        }
      }
      description
        "Type to describe the direction of NLRI transmission";
    }

    typedef bgp-well-known-community-type {
      type identityref {
        base BGP_WELL_KNOWN_STD_COMMUNITY;
      }
      description
        "Type definition for well-known IETF community attribute
      values";
      reference
        "IANA Border Gateway Protocol (BGP) Well Known Communities";

    }

    typedef bgp-std-community-type {
      type union {
        type uint32 {
          range "65536..4294901759";
        }
        type string {
          pattern '([0-9]+:[0-9]+)';
        }
      }
      description
        "Type definition for standard commmunity attributes";
      reference
        "RFC 1997 - BGP Communities Attribute";

    }

    typedef bgp-ext-community-type {
      type union {
        type string {
          pattern
            '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|'
              + '[1-9][0-9]{1,4}|[0-9]):'
              + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|'
              + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])';
        }
        type string {
          pattern
            '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|'
              + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|'
              + '2[0-4][0-9]|25[0-5]):'
              + '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|'
              + '[1-9][0-9]{1,4}|[0-9])';
        }
        type string {
          pattern
            'route\-target:(6[0-5][0-5][0-3][0-5]|'
              + '[1-5][0-9]{4}|[1-9][0-9]{1,4}|[0-9]):'
              + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|'
              + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])';
        }
        type string {
          pattern
            'route\-target:'
              + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|'
              + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|'
              + '2[0-4][0-9]|25[0-5]):'
              + '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|'
              + '[1-9][0-9]{1,4}|[0-9])';
        }
        type string {
          pattern
            'route\-origin:(6[0-5][0-5][0-3][0-5]|'
              + '[1-5][0-9]{4}|[1-9][0-9]{1,4}|[0-9]):'
              + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|'
              + '[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])';
        }
        type string {
          pattern
            'route\-origin:'
              + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|'
              + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|'
              + '2[0-4][0-9]|25[0-5]):'
              + '(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|'
              + '[1-9][0-9]{1,4}|[0-9])';
        }
      }
      description
        "Type definition for extended community attributes";
      reference
        "RFC 4360 - BGP Extended Communities Attribute";

    }

    typedef bgp-community-regexp-type {
      type string;
      description
        "Type definition for communities specified as regular
      expression patterns";
    }

    typedef bgp-origin-attr-type {
      type enumeration {
        enum "IGP" {
          value 0;
          description
            "Origin of the NLRI is internal";
        }
        enum "EGP" {
          value 1;
          description
            "Origin of the NLRI is EGP";
        }
        enum "INCOMPLETE" {
          value 2;
          description
            "Origin of the NLRI is neither IGP or EGP";
        }
      }
      description
        "Type definition for standard BGP origin attribute";
      reference
        "RFC 4271 - A Border Gateway Protocol 4 (BGP-4),
        Sec 4.3";

    }

    typedef peer-type {
      type enumeration {
        enum "INTERNAL" {
          value 0;
          description "internal (iBGP) peer";
        }
        enum "EXTERNAL" {
          value 1;
          description "external (eBGP) peer";
        }
      }
      description
        "labels a peer or peer group as explicitly internal or
      external";
    }

    identity REMOVE_PRIVATE_AS_OPTION {
      base 
      description
        "Base identity for options for removing private autonomous
      system numbers from the AS_PATH attribute";
    }

    identity PRIVATE_AS_REMOVE_ALL {
      base REMOVE_PRIVATE_AS_OPTION;
      description
        "Strip all private autonmous system numbers from the AS_PATH.
      This action is performed regardless of the other content of the
      AS_PATH attribute, and for all instances of private AS numbers
      within that attribute.";
    }

    identity PRIVATE_AS_REPLACE_ALL {
      base REMOVE_PRIVATE_AS_OPTION;
      description
        "Replace all instances of private autonomous system numbers in
      the AS_PATH with the local BGP speaker's autonomous system
      number. This action is performed regardless of the other
      content of the AS_PATH attribute, and for all instances of
      private AS number within that attribute.";
    }

    typedef remove-private-as-option {
      type identityref {
        base REMOVE_PRIVATE_AS_OPTION;
      }
      description
        "set of options for configuring how private AS path numbers
      are removed from advertisements";
    }

    typedef percentage {
      type uint8 {
        range "0..100";
      }
      description
        "Integer indicating a percentage value";
    }

    typedef rr-cluster-id-type {
      type union {
        type uint32;
        type inet:ipv4-address;
      }
      description
        "union type for route reflector cluster ids:
      option 1: 4-byte number
      option 2: IP address";
    }

    typedef community-type {
      type enumeration {
        enum "STANDARD" {
          value 0;
          description
            "send only standard communities";
        }
        enum "EXTENDED" {
          value 1;
          description
            "send only extended communities";
        }
        enum "BOTH" {
          value 2;
          description
            "send both standard and extended communities";
        }
        enum "NONE" {
          value 3;
          description
            "do not send any community attribute";
        }
      }
      description
        "type describing variations of community attributes:
      STANDARD: standard BGP community [rfc1997]
      EXTENDED: extended BGP community [rfc4360]
      BOTH: both standard and extended community";
    }
  }  // module ietf-bgp-types