netconfcentral logo

openconfig-rib-bgp-attributes@2016-10-17



  submodule openconfig-rib-bgp-attributes {

    yang-version 1;

    belongs-to openconfig-rib-bgp {
        prefix oc-rib-bgp;
    }

    import ietf-inet-types {
      prefix inet;
    }
    import openconfig-bgp-types {
      prefix oc-bgpt;
    }
    import openconfig-extensions {
      prefix oc-ext;
    }

    organization "OpenConfig working group";

    contact
      "OpenConfig working group
    www.openconfig.net";

    description
      "This submodule contains common data definitions for BGP
    attributes for use in BGP RIB tables.";

    revision "2016-10-17" {
      description
        "OpenConfig BGP RIB refactor";
      reference
        "0.3.0";

    }

    oc-ext:openconfig-version "0.3.0";

    grouping bgp-as-path-attr-state {
      description
        "Data for representing BGP AS-PATH attribute";
      leaf type {
        type oc-bgpt:as-path-segment-type;
        description
          "The type of AS-PATH segment";
      }

      leaf-list member {
        type inet:as-number;
        description
          "List of the AS numbers in the AS-PATH segment";
      }
    }  // grouping bgp-as-path-attr-state

    grouping bgp-as-path-attr-top {
      description
        "Top-level grouping for AS-PATH attribute data";
      container as-path {
        description
          "Enclosing container for the list of AS path segments.

        In the Adj-RIB-In or Adj-RIB-Out, this list should show
        the received or sent AS_PATH, respectively.  For
        example, if the local router is not 4-byte capable, this
        value should consist of 2-octet ASNs or the AS_TRANS
        (AS 23456) values received or sent in route updates.

        In the Loc-RIB, this list should reflect the effective
        AS path for the route, e.g., a 4-octet value if the
        local router is 4-octet capable.";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)
           RFC 6793 - BGP Support for Four-octet AS Number Space
           RFC 5065 - Autonomous System Confederations for BGP";

        list segment {
          description
            "Unkeyed list of AS PATH segments";
          container state {
            config false;
            description
              "Opstate data for AS-PATH segments";
            uses bgp-as-path-attr-state;
          }  // container state
        }  // list segment
      }  // container as-path
    }  // grouping bgp-as-path-attr-top

    grouping bgp-as4-path-attr-top {
      description
        "Top-level grouping for AS4-PATH attribute data";
      container as4-path {
        description
          "This is the path encoded with 4-octet
        AS numbers in the optional transitive AS4_PATH attribute.
        This value is populated with the received or sent attribute
        in Adj-RIB-In or Adj-RIB-Out, respectively.  It should not
        be populated in Loc-RIB since the Loc-RIB is expected to
        store the effective AS-Path in the as-path leaf regardless
        of being 4-octet or 2-octet.";
        reference
          "RFC 6793 - BGP Support for Four-octet AS Number Space";

        list segment {
          description
            "Unkeyed list of AS PATH segments";
          container state {
            config false;
            description
              "Opstate data for AS-PATH segments";
            uses bgp-as-path-attr-state;
          }  // container state
        }  // list segment
      }  // container as4-path
    }  // grouping bgp-as4-path-attr-top

    grouping bgp-community-attr-state {
      description
        "Common definition of BGP community attributes";
      leaf-list community {
        type union {
          type oc-bgpt:bgp-well-known-community-type;
          type oc-bgpt:bgp-std-community-type;
        }
        description
          "List of standard or well-known BGP community
        attributes.";
      }
    }  // grouping bgp-community-attr-state

    grouping bgp-extended-community-attr-state {
      description
        "Common definition of BGP extended community attribute";
      leaf-list ext-community {
        type oc-bgpt:bgp-ext-community-recv-type;
        description
          "List of BGP extended community attributes.  The received
        extended community may be an explicitly modeled
        type or unknown, represented by an 8-octet value
        formatted according to RFC 4360.";
        reference
          "RFC 4360 - BGP Extended Communities Attribute";

      }
    }  // grouping bgp-extended-community-attr-state

    grouping bgp-aggregator-attr-state {
      description
        "Operational state data for the BGP aggregator
      attribute";
      leaf as {
        type inet:as-number;
        description
          "AS number of the autnonomous system that performed the
          aggregation.";
      }

      leaf as4 {
        type inet:as-number;
        description
          "AS number of the autnonomous system that performed the
        aggregation (4-octet representation).  This value is
        populated if an upstream router is not 4-octet capable.
        Its semantics are similar to the AS4_PATH optional
        transitive attribute";
        reference
          "RFC 6793 - BGP Support for Four-octet AS Number Space";

      }

      leaf address {
        type inet:ipv4-address;
        description
          "IP address of the router that performed the
        aggregation.";
      }
    }  // grouping bgp-aggregator-attr-state

    grouping bgp-aggregator-attr-top {
      description
        "Common definition of the BGP aggregator attribute";
      container aggregator {
        description
          "BGP attribute indicating the prefix has been aggregated by
        the specified AS and router.";
        container state {
          config false;
          description
            "Operational state data for BGP aggregator attribute";
          uses bgp-aggregator-attr-state;
        }  // container state
      }  // container aggregator
    }  // grouping bgp-aggregator-attr-top

    grouping bgp-shared-common-attr-state {
      description
        "Route attributes shared across route table entries,
      common to both LOC-Rib and Adj-RIB";
      leaf origin {
        type oc-bgpt:bgp-origin-attr-type;
        description
          "BGP attribute defining the origin of the path information.";
      }

      leaf atomic-aggregate {
        type boolean;
        description
          "BGP attribute indicating that the prefix is an atomic
        aggregate, i.e., the peer selected a less specific
        route without selecting a more specific route that is
        included in it.";
      }

      leaf next-hop {
        type inet:ip-address;
        description
          "BGP next hop attribute defining the IP address of the router
        that should be used as the next hop to the destination";
      }

      leaf med {
        type uint32;
        description
          "BGP multi-exit discriminator attribute used in BGP route
        selection process";
      }

      leaf local-pref {
        type uint32;
        description
          "BGP local preference attribute sent to internal peers to
        indicate the degree of preference for externally learned
        routes.  The route with the highest local preference value
        is preferred.";
      }

      leaf originator-id {
        type inet:ipv4-address;
        description
          "BGP attribute that provides the id as an IPv4 address
        of the originator of the announcement.";
        reference
          "RFC 4456 - BGP Route Reflection: An Alternative to Full
          Mesh Internal BGP (IBGP)";

      }

      leaf-list cluster-list {
        type inet:ipv4-address;
        description
          "Represents the reflection path that the route has passed.";
        reference
          "RFC 4456 - BGP Route Reflection: An Alternative to Full
          Mesh Internal BGP (IBGP)";

      }

      leaf aigp {
        type uint64;
        description
          "BGP path attribute representing the accumulated IGP metric
        for the path";
        reference
          "RFC 7311 - The Accumulated IGP Metric Attribute for BGP";

      }
    }  // grouping bgp-shared-common-attr-state

    grouping bgp-unknown-attr-flags-state {
      description
        "Operational state data for path attribute flags";
      leaf optional {
        type boolean;
        description
          "Defines whether the attribute is optional (if
         set to true) or well-known (if set to false).
         Set in the high-order bit of the BGP attribute
         flags octet.";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";

      }

      leaf transitive {
        type boolean;
        description
          "Defines whether an optional attribute is transitive
        (if set to true) or non-transitive (if set to false).  For
        well-known attributes, the transitive flag MUST be set to
        true.  Set in the second high-order bit of the BGP attribute
        flags octet.";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";

      }

      leaf partial {
        type boolean;
        description
          "Defines whether the information contained in the optional
        transitive attribute is partial (if set to true) or complete
        (if set to false).  For well-known attributes and for
        optional non-transitive attributes, the partial flag
        must be set to false.  Set in the third high-order bit of
        the BGP attribute flags octet.";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";

      }

      leaf extended {
        type boolean;
        description
          "Defines whether the attribute length is one octet
        (if set to false) or two octets (if set to true).  Set in
        the fourth high-order bit of the BGP attribute flags
        octet.";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";

      }
    }  // grouping bgp-unknown-attr-flags-state

    grouping bgp-unknown-attr-state {
      description
        "Operational state data for path attributes not shared
      across route entries, common to LOC-RIB and Adj-RIB";
      leaf attr-type {
        type uint8;
        description
          "1-octet value encoding the attribute type code";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";

      }

      leaf attr-len {
        type uint16;
        description
          "One or two octet attribute length field indicating the
        length of the attribute data in octets.  If the Extended
        Length attribute flag is set, the length field is 2 octets,
        otherwise it is 1 octet";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";

      }

      leaf attr-value {
        type binary {
          length "1..65535";
        }
        description
          "Raw attribute value, not including the attribute
        flags, type, or length.  The maximum length
        of the attribute value data is 2^16-1 per the max value
        of the attr-len field (2 octets).";
        reference
          "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)";

      }
    }  // grouping bgp-unknown-attr-state

    grouping bgp-unknown-attr-top {
      description
        "Unknown path attributes that are not expected to be shared
      across route entries, common to LOC-RIB and Adj-RIB";
      container unknown-attributes {
        description
          "Unknown path attributes that were received in the UPDATE
        message which contained the prefix.";
        list unknown-attribute {
          key "attr-type";
          description
            "This list contains received attributes that are unrecognized
          or unsupported by the local router.  The list may be empty.";
          leaf attr-type {
            type leafref {
              path "../state/attr-type";
            }
            description
              "Reference to the list key";
          }

          container state {
            description
              "Operational state for unknown route attributes";
            uses bgp-unknown-attr-flags-state;

            uses bgp-unknown-attr-state;
          }  // container state
        }  // list unknown-attribute
      }  // container unknown-attributes
    }  // grouping bgp-unknown-attr-top

    grouping bgp-loc-rib-attr-state {
      description
        "Path attributes that are not expected to be shared across
      route entries, specific to LOC-RIB";
    }  // grouping bgp-loc-rib-attr-state

    grouping bgp-adj-rib-attr-state {
      description
        "Path attributes that are not expected to be shared across
      route entries, specific to Adj-RIB";
      leaf path-id {
        type uint32;
        description
          "When the BGP speaker supports advertisement of multiple
        paths for a prefix, the path identifier is used to
        uniquely identify a route based on the combination of the
        prefix and path id.  In the Adj-RIB-In, the path-id value is
        the value received in the update message.   In the Loc-RIB,
        if used, it should represent a locally generated path-id
        value for the corresponding route.  In Adj-RIB-Out, it
        should be the value sent to a neighbor when add-paths is
        used, i.e., the capability has been negotiated.";
        reference
          "draft-ietf-idr-add-paths - Advertisement of Multiple Paths
          in BGP";

      }
    }  // grouping bgp-adj-rib-attr-state
  }  // submodule openconfig-rib-bgp-attributes