Internet DRAFT - draft-wang-i2rs-bgp-dm

draft-wang-i2rs-bgp-dm







I2RS Working Group                                               L. Wang
Internet-Draft                                                  S. Hares
Intended status: Standards Track                               S. Zhuang
Expires: April 26, 2015                                           Huawei
                                                        October 23, 2014


                        An I2RS BGP Data Modell
                     draft-wang-i2rs-bgp-dm-00.txt

Abstract

   This document introduces a yang data for i2RS BGP protocol and
   network policy that aligns with the I2RS BGP use cases.  This draft
   utilizes the general Policy based routing structured found in the RIB
   Information Model (IM) and Policy Base Policy.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 26, 2015.

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.



Wang, et al.             Expires April 26, 2015                 [Page 1]

Internet-Draft                   BGP IM                     October 2014


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Definitions and Acronyms  . . . . . . . . . . . . . . . . . .   2
   3.  BGP Yang top-level description  . . . . . . . . . . . . . . .   3
   4.  BGP Yang description  . . . . . . . . . . . . . . . . . . . .  68
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . 107
   6.  Security Considerations . . . . . . . . . . . . . . . . . . . 107
   7.  Informative References  . . . . . . . . . . . . . . . . . . . 107
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . 108

1.  Introduction

   The Interface to the Routing System (I2RS) provides read and write
   access to the information and state within the routing process within
   routing elements via protocol message exchange between an I2RS Client
   and an I2RS Agent associated with the a routing system.  The
   [I-D.ietf-i2rs-architecture] describes the basic interactions of this
   exchange.  One of the important functions of this messages exchange
   is for the I2RS client to interact with one or more I2RS agents to
   collect information from network routing systems.

   One of the key information pieces that I2RS clients may collect from
   I2RS agents is the BGP information regarding BGP peers, BGP routes,
   and network topologies created within BGP.  This document introduces
   a basic information model for BGP policies.  This policy model can be
   linked with other information models such as the I2RS RIB
   informational model [I-D.ietf-i2rs-rib-info-model], and uses the
   generic policy found in the Policy Routing modules in
   [I-D.hares-i2rs-bnp-info-model].  This basic BGP Information Model is
   an extendable policy model is a product of the industry approach to
   I2RS.

2.  Definitions and Acronyms

      BGP: Border Gateway Protocol

      Information Model: An abstract model of a conceptual domain,
      independent of a specific implementation or data representation

      NETCONF:The Network Configuration Protocol as defined in [RFC6536]

      RESTCONF: The REST-like protocol that provides a programmatic
      interface over HTTP for accesing data defined in YANG, using
      datastores defined in NETCONF Protocol [I-D.ietf-netconf-restconf]
      as defined in RBNF: Routing Backus-Naur Form [RFC5511].





Wang, et al.             Expires April 26, 2015                 [Page 2]

Internet-Draft                   BGP IM                     October 2014


3.  BGP Yang top-level description

   Below is the full BGP Yang top-level description for the
   configuration portion of I2RS configuration model.  Additional
   information on the structure of the information model is described in
   [I-D.hares-i2rs-bnp-info-model].

module: bgp-protocol
   +--rw bgp-protocol
      +--rw router-id?                      inet:ip-address
      +--rw as-number?                      uint32
      +--ro protocol-status?                enumeration
      +--rw shutdown-protocol?              boolean
      +--ro bgp-role?                       enumeration
      +--rw bgp-ipv4-uni-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv4-route ipv4-prefix-length]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string



Wang, et al.             Expires April 26, 2015                 [Page 3]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw
      |  |     |  |  |  +--rw valid              boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id       uint8
      |  |     |  |  |  +--rw cost-id            uint32
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                      enumeration
      |     |  +--ro peer-received-update-cnt?   uint64



Wang, et al.             Expires April 26, 2015                 [Page 4]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv4-route ipv4-prefix-length]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id    uint8
      |     |     |  |  |  +--rw cost-id         uint32
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist



Wang, et al.             Expires April 26, 2015                 [Page 5]

Internet-Draft                   BGP IM                     October 2014


      |     |     |  |  +--rw uscluslen?         uint16
      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv4-route ipv4-prefix-length]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id    uint8
      |           |  |  |  +--rw cost-id         uint32
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16



Wang, et al.             Expires April 26, 2015                 [Page 6]

Internet-Draft                   BGP IM                     October 2014


      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-labeled-ipv4-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list*
                  [ipv4-route ipv4-prefix-length mpls-label]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw mpls-label            mpls-label-def
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  |  +--rw valid           boolean



Wang, et al.             Expires April 26, 2015                 [Page 7]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id    uint8
      |  |     |  |  |  +--rw cost-id         uint32
      |  |     |  |  +--rw usextcommsize?    uint16
      |  |     |  |  +--rw ulrefcount?       uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                      enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64



Wang, et al.             Expires April 26, 2015                 [Page 8]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list*
                     [ipv4-route ipv4-prefix-length mpls-label]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw mpls-label            mpls-label-def
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id    uint8
      |     |     |  |  |  +--rw cost-id         uint32
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16



Wang, et al.             Expires April 26, 2015                 [Page 9]

Internet-Draft                   BGP IM                     October 2014


      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list*
                    [ipv4-route ipv4-prefix-length mpls-label]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw mpls-label            mpls-label-def
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?        enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id    uint8
      |           |  |  |  +--rw cost-id         uint32
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string
      |           |  +--rw bgp-clusterlist



Wang, et al.             Expires April 26, 2015                [Page 10]

Internet-Draft                   BGP IM                     October 2014


      |           |  |  +--rw uscluslen?         uint16
      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?   rib-state-def
      |              +--ro rib-last-state?      rib-state-def
      |              +--ro rib-rejected-reason?   enumeration
      |              +--ro not-preferred-reason?  enumeration
      +--rw bgp-ipv4-multi-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv4-route ipv4-prefix-length]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  |  +--rw valid              boolean
      |  |     |  |  |  +--rw community-id       uint8



Wang, et al.             Expires April 26, 2015                [Page 11]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  |  +--rw insertion-point    uint32
      |  |     |  |  |  +--rw cost-id            uint32
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                                      enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                      enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64



Wang, et al.             Expires April 26, 2015                [Page 12]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv4-route ipv4-prefix-length]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id    uint8
      |     |     |  |  |  +--rw cost-id         uint32
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string



Wang, et al.             Expires April 26, 2015                [Page 13]

Internet-Draft                   BGP IM                     October 2014


      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv4-route ipv4-prefix-length]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id    uint8
      |           |  |  |  +--rw cost-id         uint32
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32



Wang, et al.             Expires April 26, 2015                [Page 14]

Internet-Draft                   BGP IM                     October 2014


      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-vpnv4-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list*
              [ipv4-route ipv4-prefix-length route-distinguisher]
      |  |     +--rw ipv4-route             inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length     uint8
      |  |     +--rw mpls-label?            mpls-label-def
      |  |     +--rw route-distinguisher route-distinguisher-def
      |  |     +--rw bgp-route-type?        enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  |  +--rw valid           boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id       uint8



Wang, et al.             Expires April 26, 2015                [Page 15]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  |  +--rw cost-id            uint32
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32
      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?         uint16
      |  |     |  |  +--rw ulrefclus?         uint32
      |  |     |  |  +--rw clusterlist-value? string
      |  |     |  +--rw bgp-originator-id?    uint32
      |  |     +--ro bgp-route-create?       enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?   rib-state-def
      |  |        +--ro rib-last-state?      rib-state-def
      |  |        +--ro rib-rejected-reason?  enumeration
      |  |        +--ro not-preferred-reason? enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in           policy-group-name
      |     +--rw bgp-policy-out          policy-group-name
      |     +--ro peer-policy-in-pset     policy-set-name
      |     +--ro peer-policy-out-pset    policy-set-name
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                              enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                              enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64



Wang, et al.             Expires April 26, 2015                [Page 16]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list*
               [ipv4-route ipv4-prefix-length route-distinguisher]
      |     |     +--rw ipv4-route             inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length     uint8
      |     |     +--rw mpls-label?            mpls-label-def
      |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     +--rw bgp-route-type?        enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?           enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop    inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id    uint8
      |     |     |  |  |  +--rw cost-id         uint32
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?         uint16



Wang, et al.             Expires April 26, 2015                [Page 17]

Internet-Draft                   BGP IM                     October 2014


      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?    uint32
      |     |     +--ro bgp-route-create?      enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?    rib-state-def
      |     |        +--ro rib-last-state?       rib-state-def
      |     |        +--ro rib-rejected-reason?  enumeration
      |     |        +--ro not-preferred-reason? enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list*
                  [ipv4-route ipv4-prefix-length route-distinguisher]
      |           +--rw ipv4-route             inet:ipv4-prefix
      |           +--rw ipv4-prefix-length     uint8
      |           +--rw mpls-label?            mpls-label-def
      |           +--rw route-distinguisher route-distinguisher-def
      |           +--rw bgp-route-type?        enumeration
      |           +--rw route-admin-distance   uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?         enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?              uint32
      |           |  +--rw bgp-localpref?        uint32
      |           |  +--rw bgp-atomic-aggregate? uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id    uint8
      |           |  |  |  +--rw cost-id         uint32
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string



Wang, et al.             Expires April 26, 2015                [Page 18]

Internet-Draft                   BGP IM                     October 2014


      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?         uint16
      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?    enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv4-l3vpn-instance-list* [bgp-l3vpn-instance-name]
      |  +--rw bgp-l3vpn-instance-name    string
      |  +--rw bgp-instance-name?         string
      |  +--rw bgp-instance-create?       enumeration
      |  +--rw bgp-instance-type?         enumeration
      |  +--rw bgp-vendor-type?           enumeration
      |  +--rw afi?                       afi-def
      |  +--rw safi?                      safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv4-route ipv4-prefix-length]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?        enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?   inet:ip-address
      |  |     |  +--rw bgp-med?              uint32
      |  |     |  +--rw bgp-localpref?        uint32
      |  |     |  +--rw bgp-atomic-aggregate? uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community



Wang, et al.             Expires April 26, 2015                [Page 19]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  |  +--rw valid           boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id    uint8
      |  |     |  |  |  +--rw cost-id         uint32
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32
      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                                       enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                       enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64



Wang, et al.             Expires April 26, 2015                [Page 20]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list*
                     [ipv4-route ipv4-prefix-length]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?        enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?   inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id    uint8
      |     |     |  |  |  +--rw cost-id         uint32
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist



Wang, et al.             Expires April 26, 2015                [Page 21]

Internet-Draft                   BGP IM                     October 2014


      |     |     |  |  +--rw uscluslen?         uint16
      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?    uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?    rib-state-def
      |     |        +--ro rib-last-state?       rib-state-def
      |     |        +--ro rib-rejected-reason?  enumeration
      |     |        +--ro not-preferred-reason? enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv4-route ipv4-prefix-length]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?        enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id    uint8
      |           |  |  |  +--rw cost-id         uint32
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?         uint16



Wang, et al.             Expires April 26, 2015                [Page 22]

Internet-Draft                   BGP IM                     October 2014


      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?    rib-state-def
      |              +--ro rib-last-state?       rib-state-def
      |              +--ro rib-rejected-reason?  enumeration
      |              +--ro not-preferred-reason? enumeration
      +--rw bgp-ipv6-uni-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv6-route ipv6-prefix-length]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?        enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?   inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  |  +--rw valid              boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id    uint8



Wang, et al.             Expires April 26, 2015                [Page 23]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  |  +--rw cost-id         uint32
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32
      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?         uint16
      |  |     |  |  +--rw ulrefclus?         uint32
      |  |     |  |  +--rw clusterlist-value? string
      |  |     |  +--rw bgp-originator-id?    uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value?  enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value?  enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                          enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64



Wang, et al.             Expires April 26, 2015                [Page 24]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv6-route ipv6-prefix-length]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?        enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?  inet:ip-address
      |     |     |  +--rw bgp-med?              uint32
      |     |     |  +--rw bgp-localpref?        uint32
      |     |     |  +--rw bgp-atomic-aggregate? uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?       uint32
      |     |     |  |  +--rw ulasnumber?        uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id    uint8
      |     |     |  |  |  +--rw cost-id         uint32
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?         uint16
      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?    uint32
      |     |     +--ro bgp-route-create?     enumeration



Wang, et al.             Expires April 26, 2015                [Page 25]

Internet-Draft                   BGP IM                     October 2014


      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?    rib-state-def
      |     |        +--ro rib-last-state?       rib-state-def
      |     |        +--ro rib-rejected-reason?  enumeration
      |     |        +--ro not-preferred-reason? enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv6-route ipv6-prefix-length]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?        enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?     et:ip-address
      |           |  +--rw bgp-med?              uint32
      |           |  +--rw bgp-localpref?        uint32
      |           |  +--rw bgp-atomic-aggregate? uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?    uint32
      |           |  |  +--rw ulasnumber?     uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?     uint16
      |           |  |  +--rw ulrefcomm?      uint32
      |           |  |  +--rw commattr-value? string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id    uint8
      |           |  |  |  +--rw cost-id         uint32
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?         uint16
      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info



Wang, et al.             Expires April 26, 2015                [Page 26]

Internet-Draft                   BGP IM                     October 2014


      |              +--ro rib-current-state? rib-state-def
      |              +--ro rib-last-state?    rib-state-def
      |              +--ro rib-rejected-reason?  enumeration
      |              +--ro not-preferred-reason? enumeration
      +--rw bgp-labeled-ipv6-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list*
                   [ipv6-route ipv6-prefix-length mpls-label]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw mpls-label            mpls-label-def
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?        enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?  inet:ip-address
      |  |     |  +--rw bgp-med?              uint32
      |  |     |  +--rw bgp-localpref?        uint32
      |  |     |  +--rw bgp-atomic-aggregate? uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  |  +--rw valid           boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id    uint8
      |  |     |  |  |  +--rw cost-id         uint32
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32



Wang, et al.             Expires April 26, 2015                [Page 27]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?         uint16
      |  |     |  |  +--rw ulrefclus?         uint32
      |  |     |  |  +--rw clusterlist-value? string
      |  |     |  +--rw bgp-originator-id?    uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state? rib-state-def
      |  |        +--ro rib-last-state?    rib-state-def
      |  |        +--ro rib-rejected-reason?  enumeration
      |  |        +--ro not-preferred-reason? enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?  inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address? inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?  peer-state
      |     |  +--ro peer-last-state?     peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64



Wang, et al.             Expires April 26, 2015                [Page 28]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list*
                   [ipv6-route ipv6-prefix-length mpls-label]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw mpls-label            mpls-label-def
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?        enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?      uint16
      |     |     |  |  +--rw ulrefcount?     uint16
      |     |     |  |  +--rw asstring?       string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?   inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id    uint8
      |     |     |  |  |  +--rw cost-id         uint32
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info



Wang, et al.             Expires April 26, 2015                [Page 29]

Internet-Draft                   BGP IM                     October 2014


      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list*
                    [ipv6-route ipv6-prefix-length mpls-label]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw mpls-label            mpls-label-def
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id       uint8
      |           |  |  |  +--rw cost-id            uint32
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration



Wang, et al.             Expires April 26, 2015                [Page 30]

Internet-Draft                   BGP IM                     October 2014


      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv6-multi-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv6-route ipv6-prefix-length]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  |  +--rw valid              boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id       uint8
      |  |     |  |  |  +--rw cost-id            uint32
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string



Wang, et al.             Expires April 26, 2015                [Page 31]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                                      enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                      enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64



Wang, et al.             Expires April 26, 2015                [Page 32]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv6-route ipv6-prefix-length]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id       uint8
      |     |     |  |  |  +--rw cost-id            uint32
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def



Wang, et al.             Expires April 26, 2015                [Page 33]

Internet-Draft                   BGP IM                     October 2014


      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv6-route ipv6-prefix-length]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id       uint8
      |           |  |  |  +--rw cost-id            uint32
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration



Wang, et al.             Expires April 26, 2015                [Page 34]

Internet-Draft                   BGP IM                     October 2014


      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-vpnv6-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list*
              [ipv6-route ipv6-prefix-length route-distinguisher]
      |  |     +--rw ipv6-route             inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length     uint8
      |  |     +--rw mpls-label?            mpls-label-def
      |  |     +--rw route-distinguisher route-distinguisher-def
      |  |     +--rw bgp-route-type?        enumeration
      |  |     +--rw route-admin-distance   uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?         enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  |  +--rw valid              boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id       uint8
      |  |     |  |  |  +--rw cost-id            uint32
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist



Wang, et al.             Expires April 26, 2015                [Page 35]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?      enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                                       enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                      enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64



Wang, et al.             Expires April 26, 2015                [Page 36]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list*
                [ipv6-route ipv6-prefix-length route-distinguisher]
      |     |     +--rw ipv6-route             inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length     uint8
      |     |     +--rw mpls-label?            mpls-label-def
      |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     +--rw bgp-route-type?        enumeration
      |     |     +--rw route-admin-distance   uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?           enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?   inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id       uint8
      |     |     |  |  |  +--rw cost-id            uint32
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?      enumeration
      |     |     +--ro bgp-rt-state-info



Wang, et al.             Expires April 26, 2015                [Page 37]

Internet-Draft                   BGP IM                     October 2014


      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list*
                  [ipv6-route ipv6-prefix-length route-distinguisher]
      |           +--rw ipv6-route             inet:ipv6-prefix
      |           +--rw ipv6-prefix-length     uint8
      |           +--rw mpls-label?            mpls-label-def
      |           +--rw route-distinguisher route-distinguisher-def
      |           +--rw bgp-route-type?        enumeration
      |           +--rw route-admin-distance   uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?         enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id      uint8
      |           |  |  |  +--rw cost-id           uint32
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32



Wang, et al.             Expires April 26, 2015                [Page 38]

Internet-Draft                   BGP IM                     October 2014


      |           +--ro bgp-route-create?      enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv6-l3vpn-instance-list* [bgp-l3vpn-instance-name]
      |  +--rw bgp-l3vpn-instance-name    string
      |  +--rw bgp-instance-name?         string
      |  +--rw bgp-instance-create?       enumeration
      |  +--rw bgp-instance-type?         enumeration
      |  +--rw bgp-vendor-type?           enumeration
      |  +--rw afi?                       afi-def
      |  +--rw safi?                      safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv6-route ipv6-prefix-length]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?           enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?   inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--rw custom-community
      |  |     |  |  +--rw valid             boolean
      |  |     |  |  |  +--rw insertion-point uint32
      |  |     |  |  |  +--rw community-id       uint8
      |  |     |  |  |  +--rw cost-id            uint32
      |  |     |  |  +--rw usextcommsize?       uint16



Wang, et al.             Expires April 26, 2015                [Page 39]

Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                                       enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                       enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64



Wang, et al.             Expires April 26, 2015                [Page 40]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv6-route ipv6-prefix-length]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
      |     |     |  |  +--rw custom-community
      |     |     |  |  |  +--rw valid           boolean
      |     |     |  |  |  +--rw insertion-point uint32
      |     |     |  |  |  +--rw community-id       uint8
      |     |     |  |  |  +--rw cost-id            uint32
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info



Wang, et al.             Expires April 26, 2015                [Page 41]

Internet-Draft                   BGP IM                     October 2014


      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list*
                      [ipv6-route ipv6-prefix-length]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
      |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?           enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--rw custom-community
      |           |  |  |  +--rw valid           boolean
      |           |  |  |  +--rw insertion-point uint32
      |           |  |  |  +--rw community-id       uint8
      |           |  |  |  +--rw cost-id            uint32
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info



Wang, et al.             Expires April 26, 2015                [Page 42]

Internet-Draft                   BGP IM                     October 2014


      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv4-mvpn-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-type?       enumeration
      |  |  +--rw route-admin-distance  uint16
      |  |  +--rw bgp-attribute-list
      |  |  |  +--rw bgp-origin?        enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16
      |  |  |  |  +--rw asstring?          string
      |  |  |  |  +--ro usascountfrcomp?   uint16
      |  |  |  |  +--rw usastotalcount?    uint16
      |  |  |  |  +--rw usas4pathlen?      uint16
      |  |  |  |  +--rw as4pathvalue?      string
      |  |  |  +--rw bgp-nexthop?            inet:ip-address
      |  |  |  +--rw bgp-med?                uint32
      |  |  |  +--rw bgp-localpref?          uint32
      |  |  |  +--rw bgp-atomic-aggregate?   uint32
      |  |  |  +--rw bgp-aggregator
      |  |  |  |  +--rw ulipaddress?   uint32
      |  |  |  |  +--rw ulasnumber?    uint32
      |  |  |  +--rw bgp-commattr
      |  |  |  |  +--rw uscommsize?       uint16
      |  |  |  |  +--rw ulrefcomm?        uint32
      |  |  |  |  +--rw commattr-value?   string
      |  |  |  +--rw bgp-extcommattr
      |  |  |  |  +--rw custom-community
      |  |  |  |  |  +--rw valid             boolean
      |  |  |  |  |  +--rw insertion-point uint32
      |  |  |  |  |  +--rw community-id       uint8
      |  |  |  |  |  +--rw cost-id            uint32
      |  |  |  |  +--rw usextcommsize?       uint16
      |  |  |  |  +--rw ulrefcount?          uint32
      |  |  |  |  +--rw extcommattr-value?   string
      |  |  |  +--rw bgp-clusterlist
      |  |  |  |  +--rw uscluslen?           uint16
      |  |  |  |  +--rw ulrefclus?           uint32
      |  |  |  |  +--rw clusterlist-value?   string



Wang, et al.             Expires April 26, 2015                [Page 43]

Internet-Draft                   BGP IM                     October 2014


      |  |  |  +--rw bgp-originator-id?      uint32
      |  |  +--ro bgp-route-create?           enumeration
      |  |  +--ro bgp-rt-state-info
      |  |  |  +--ro rib-current-state?      rib-state-def
      |  |  |  +--ro rib-last-state?         rib-state-def
      |  |  |  +--ro rib-rejected-reason?    enumeration
      |  |  |  +--ro not-preferred-reason?   enumeration
      |  |  +--rw (bgp-mvpn-route-type)?
      |  |     +--:(INTRA_AS_I_PMSI_AD)
      |  |     |  +--rw intra-as-i-pmsi-ad-route*
            [route-type route-distinguisher origin-router-ip-addr]
      |  |     |     +--rw route-type           mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw origin-router-ip-addr inet:ip-prefix
      |  |     +--:(INTER_AS_I_PMSI_AD)
      |  |     |  +--rw inter_as_i_pmsi_as_route*
                      [route-type route-distinguisher source-as]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw source-as           inet:as-number
      |  |     +--:(S_PMSI_AD)
      |  |     |  +--rw s-pmsi-ad-route*
            [route-type route-distinguisher multicast-source
                           multicast-group origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source    inet:ip-prefix
      |  |     |     +--rw multicast-group     inet:ip-prefix
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(LEAF_AD)
      |  |     |  +--rw leaf-ad-route*
                             [route-type route-key origin-router-ip-addr]
      |  |     |     +--rw route-type               mvpn-route-type
      |  |     |     +--rw route-key                binary
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(SOURCE_ACTIVE_AD)
      |  |     |  +--rw source-active-ad-route*
       [route-type route-distinguisher multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SHARED_TREE_JOIN)
      |  |     |  +--rw shared-tree-join-route*
                       [route-type route-distinguisher source-as
                                multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def



Wang, et al.             Expires April 26, 2015                [Page 44]

Internet-Draft                   BGP IM                     October 2014


      |  |     |     +--rw source-as              inet:as-number
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SOURCE_TREE_JOIN)
      |  |        +--rw source-tree-join-route*
                       [route-type route-distinguisher source-as
                                 multicast-source multicast-group]
      |  |           +--rw route-type             mvpn-route-type
      |  |           +--rw route-distinguisher route-distinguisher-def
      |  |           +--rw source-as              inet:as-number
      |  |           +--rw multicast-source       inet:ip-prefix
      |  |           +--rw multicast-group        inet:ip-prefix
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                              enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                              enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64



Wang, et al.             Expires April 26, 2015                [Page 45]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-route-type?       enumeration
      |     |  +--rw route-admin-distance  uint16
      |     |  +--rw bgp-attribute-list
      |     |  |  +--rw bgp-origin?        enumeration
      |     |  |  +--rw bgp-aspath
      |     |  |  |  +--rw usascount?         uint16
      |     |  |  |  +--rw ulrefcount?        uint16
      |     |  |  |  +--rw asstring?          string
      |     |  |  |  +--ro usascountfrcomp?   uint16
      |     |  |  |  +--rw usastotalcount?    uint16
      |     |  |  |  +--rw usas4pathlen?      uint16
      |     |  |  |  +--rw as4pathvalue?      string
      |     |  |  +--rw bgp-nexthop?   inet:ip-address
      |     |  |  +--rw bgp-med?                uint32
      |     |  |  +--rw bgp-localpref?          uint32
      |     |  |  +--rw bgp-atomic-aggregate?   uint32
      |     |  |  +--rw bgp-aggregator
      |     |  |  |  +--rw ulipaddress?   uint32
      |     |  |  |  +--rw ulasnumber?    uint32
      |     |  |  +--rw bgp-commattr
      |     |  |  |  +--rw uscommsize?       uint16
      |     |  |  |  +--rw ulrefcomm?        uint32
      |     |  |  |  +--rw commattr-value?   string
      |     |  |  +--rw bgp-extcommattr
      |     |  |  |  +--rw custom-community
      |     |  |  |  |  +--rw valid           boolean
      |     |  |  |  |  +--rw insertion-point uint32
      |     |  |  |  |  +--rw community-id       uint8
      |     |  |  |  |  +--rw cost-id            uint32
      |     |  |  |  +--rw usextcommsize?       uint16
      |     |  |  |  +--rw ulrefcount?          uint32
      |     |  |  |  +--rw extcommattr-value?   string
      |     |  |  +--rw bgp-clusterlist
      |     |  |  |  +--rw uscluslen?           uint16
      |     |  |  |  +--rw ulrefclus?           uint32
      |     |  |  |  +--rw clusterlist-value?   string
      |     |  |  +--rw bgp-originator-id?      uint32
      |     |  +--ro bgp-route-create?           enumeration
      |     |  +--ro bgp-rt-state-info
      |     |  |  +--ro rib-current-state?      rib-state-def
      |     |  |  +--ro rib-last-state?         rib-state-def
      |     |  |  +--ro rib-rejected-reason?    enumeration
      |     |  |  +--ro not-preferred-reason?   enumeration



Wang, et al.             Expires April 26, 2015                [Page 46]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--rw (bgp-mvpn-route-type)?
      |     |     +--:(INTRA_AS_I_PMSI_AD)
      |     |     |  +--rw intra-as-i-pmsi-ad-route*
                   [route-type route-distinguisher origin-router-ip-addr]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(INTER_AS_I_PMSI_AD)
      |     |     |  +--rw inter_as_i_pmsi_as_route*
                              [route-type route-distinguisher source-as]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as           inet:as-number
      |     |     +--:(S_PMSI_AD)
      |     |     |  +--rw s-pmsi-ad-route*
                           [route-type route-distinguisher
              multicast-source multicast-group origin-router-ip-addr]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw multicast-source    inet:ip-prefix
      |     |     |     +--rw multicast-group     inet:ip-prefix
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(LEAF_AD)
      |     |     |  +--rw leaf-ad-route*
                           [route-type route-key origin-router-ip-addr]
      |     |     |     +--rw route-type               mvpn-route-type
      |     |     |     +--rw route-key                binary
      |     |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |     |     +--:(SOURCE_ACTIVE_AD)
      |     |     |  +--rw source-active-ad-route*
       [route-type route-distinguisher multicast-source multicast-group]
      |     |     |     +--rw route-type             mvpn-route-type
      |     |     |     +--rw route-distinguisher    route-distinguisher-def
      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     +--:(SHARED_TREE_JOIN)
      |     |     |  +--rw shared-tree-join-route*
                  [route-type route-distinguisher source-as
                              multicast-source multicast-group]
      |     |     |     +--rw route-type             mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as              inet:as-number
      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     +--:(SOURCE_TREE_JOIN)
      |     |        +--rw source-tree-join-route*
                     [route-type route-distinguisher source-as
                                   multicast-source multicast-group]



Wang, et al.             Expires April 26, 2015                [Page 47]

Internet-Draft                   BGP IM                     October 2014


      |     |           +--rw route-type             mvpn-route-type
      |     |           +--rw route-distinguisher route-distinguisher-def
      |     |           +--rw source-as              inet:as-number
      |     |           +--rw multicast-source       inet:ip-prefix
      |     |           +--rw multicast-group        inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?          enumeration
      |        +--rw route-admin-distance     uint16
      |        +--rw bgp-attribute-list
      |        |  +--rw bgp-origin?           enumeration
      |        |  +--rw bgp-aspath
      |        |  |  +--rw usascount?         uint16
      |        |  |  +--rw ulrefcount?        uint16
      |        |  |  +--rw asstring?          string
      |        |  |  +--ro usascountfrcomp?   uint16
      |        |  |  +--rw usastotalcount?    uint16
      |        |  |  +--rw usas4pathlen?      uint16
      |        |  |  +--rw as4pathvalue?      string
      |        |  +--rw bgp-nexthop?            inet:ip-address
      |        |  +--rw bgp-med?                uint32
      |        |  +--rw bgp-localpref?          uint32
      |        |  +--rw bgp-atomic-aggregate?   uint32
      |        |  +--rw bgp-aggregator
      |        |  |  +--rw ulipaddress?   uint32
      |        |  |  +--rw ulasnumber?    uint32
      |        |  +--rw bgp-commattr
      |        |  |  +--rw uscommsize?       uint16
      |        |  |  +--rw ulrefcomm?        uint32
      |        |  |  +--rw commattr-value?   string
      |        |  +--rw bgp-extcommattr
      |        |  |  +--rw custom-community
      |        |  |  |  +--rw valid              boolean
      |        |  |  |  +--rw insertion-point uint32
      |        |  |  |  +--rw community-id       uint8
      |        |  |  |  +--rw cost-id            uint32
      |        |  |  +--rw usextcommsize?       uint16
      |        |  |  +--rw ulrefcount?          uint32
      |        |  |  +--rw extcommattr-value?   string
      |        |  +--rw bgp-clusterlist
      |        |  |  +--rw uscluslen?           uint16
      |        |  |  +--rw ulrefclus?           uint32
      |        |  |  +--rw clusterlist-value?   string
      |        |  +--rw bgp-originator-id?      uint32
      |        +--ro bgp-route-create?           enumeration
      |        +--ro bgp-rt-state-info
      |        |  +--ro rib-current-state?      rib-state-def
      |        |  +--ro rib-last-state?         rib-state-def
      |        |  +--ro rib-rejected-reason?    enumeration



Wang, et al.             Expires April 26, 2015                [Page 48]

Internet-Draft                   BGP IM                     October 2014


      |        |  +--ro not-preferred-reason?   enumeration
      |        +--rw (bgp-mvpn-route-type)?
      |           +--:(INTRA_AS_I_PMSI_AD)
      |           |  +--rw intra-as-i-pmsi-ad-route*
                [route-type route-distinguisher origin-router-ip-addr]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(INTER_AS_I_PMSI_AD)
      |           |  +--rw inter_as_i_pmsi_as_route*
                            [route-type route-distinguisher source-as]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw source-as           inet:as-number
      |           +--:(S_PMSI_AD)
      |           |  +--rw s-pmsi-ad-route*
                        [route-type route-distinguisher multicast-source
                           multicast-group origin-router-ip-addr]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source    inet:ip-prefix
      |           |     +--rw multicast-group     inet:ip-prefix
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(LEAF_AD)
      |           |  +--rw leaf-ad-route*
                          [route-type route-key origin-router-ip-addr]
      |           |     +--rw route-type               mvpn-route-type
      |           |     +--rw route-key                binary
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(SOURCE_ACTIVE_AD)
      |           |  +--rw source-active-ad-route*
        [route-type route-distinguisher multicast-source multicast-group]
      |           |     +--rw route-type             mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SHARED_TREE_JOIN)
      |           |  +--rw shared-tree-join-route*
                        [route-type route-distinguisher source-as
                                 multicast-source multicast-group]
      |           |     +--rw route-type             mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw source-as              inet:as-number
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SOURCE_TREE_JOIN)
      |              +--rw source-tree-join-route*
                      [route-type route-distinguisher source-as



Wang, et al.             Expires April 26, 2015                [Page 49]

Internet-Draft                   BGP IM                     October 2014


                            multicast-source multicast-group]
      |                 +--rw route-type             mvpn-route-type
      |                 +--rw route-distinguisher route-distinguisher-def
      |                 +--rw source-as              inet:as-number
      |                 +--rw multicast-source       inet:ip-prefix
      |                 +--rw multicast-group        inet:ip-prefix
      +--rw bgp-ipv6-mvpn-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-type?          enumeration
      |  |  +--rw route-admin-distance  uint16
      |  |  +--rw bgp-attribute-list
      |  |  |  +--rw bgp-origin?             enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16
      |  |  |  |  +--rw asstring?          string
      |  |  |  |  +--ro usascountfrcomp?   uint16
      |  |  |  |  +--rw usastotalcount?    uint16
      |  |  |  |  +--rw usas4pathlen?      uint16
      |  |  |  |  +--rw as4pathvalue?      string
      |  |  |  +--rw bgp-nexthop?            inet:ip-address
      |  |  |  +--rw bgp-med?                uint32
      |  |  |  +--rw bgp-localpref?          uint32
      |  |  |  +--rw bgp-atomic-aggregate?   uint32
      |  |  |  +--rw bgp-aggregator
      |  |  |  |  +--rw ulipaddress?   uint32
      |  |  |  |  +--rw ulasnumber?    uint32
      |  |  |  +--rw bgp-commattr
      |  |  |  |  +--rw uscommsize?       uint16
      |  |  |  |  +--rw ulrefcomm?        uint32
      |  |  |  |  +--rw commattr-value?   string
      |  |  |  +--rw bgp-extcommattr
      |  |  |  |  +--rw custom-community
      |  |  |  |  |  +--rw valid             boolean
      |  |  |  |  |  +--rw insertion-point uint32
      |  |  |  |  |  +--rw community-id       uint8
      |  |  |  |  |  +--rw cost-id            uint32
      |  |  |  |  +--rw usextcommsize?       uint16
      |  |  |  |  +--rw ulrefcount?          uint32
      |  |  |  |  +--rw extcommattr-value?   string
      |  |  |  +--rw bgp-clusterlist
      |  |  |  |  +--rw uscluslen?           uint16



Wang, et al.             Expires April 26, 2015                [Page 50]

Internet-Draft                   BGP IM                     October 2014


      |  |  |  |  +--rw ulrefclus?           uint32
      |  |  |  |  +--rw clusterlist-value?   string
      |  |  |  +--rw bgp-originator-id?      uint32
      |  |  +--ro bgp-route-create?           enumeration
      |  |  +--ro bgp-rt-state-info
      |  |  |  +--ro rib-current-state?      rib-state-def
      |  |  |  +--ro rib-last-state?         rib-state-def
      |  |  |  +--ro rib-rejected-reason?    enumeration
      |  |  |  +--ro not-preferred-reason?   enumeration
      |  |  +--rw (bgp-mvpn-route-type)?
      |  |     +--:(INTRA_AS_I_PMSI_AD)
      |  |     |  +--rw intra-as-i-pmsi-ad-route*
                   [route-type route-distinguisher origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(INTER_AS_I_PMSI_AD)
      |  |     |  +--rw inter_as_i_pmsi_as_route*
                          [route-type route-distinguisher source-as]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw source-as              inet:as-number
      |  |     +--:(S_PMSI_AD)
      |  |     |  +--rw s-pmsi-ad-route*
                 [route-type route-distinguisher multicast-source
                        multicast-group origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source         inet:ip-prefix
      |  |     |     +--rw multicast-group          inet:ip-prefix
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(LEAF_AD)
      |  |     |  +--rw leaf-ad-route*
                          [route-type route-key origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-key           binary
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(SOURCE_ACTIVE_AD)
      |  |     |  +--rw source-active-ad-route*
                         [route-type route-distinguisher
                              multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SHARED_TREE_JOIN)
      |  |     |  +--rw shared-tree-join-route*
                         [route-type route-distinguisher



Wang, et al.             Expires April 26, 2015                [Page 51]

Internet-Draft                   BGP IM                     October 2014


                                source-as multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher    route-distinguisher-def
      |  |     |     +--rw source-as              inet:as-number
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SOURCE_TREE_JOIN)
      |  |        +--rw source-tree-join-route*
                          [route-type route-distinguisher source-as
                                    multicast-source multicast-group]
      |  |           +--rw route-type          mvpn-route-type
      |  |           +--rw route-distinguisher route-distinguisher-def
      |  |           +--rw source-as           inet:as-number
      |  |           +--rw multicast-source    inet:ip-prefix
      |  |           +--rw multicast-group     inet:ip-prefix
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value?
                                              enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value?
                                              enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                              enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                              enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64



Wang, et al.             Expires April 26, 2015                [Page 52]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-route-type?       enumeration
      |  |     +--rw route-admin-distance  uint16
      |     |  +--rw bgp-attribute-list
      |     |  |  +--rw bgp-origin?        enumeration
      |     |  |  +--rw bgp-aspath
      |     |  |  |  +--rw usascount?         uint16
      |     |  |  |  +--rw ulrefcount?        uint16
      |     |  |  |  +--rw asstring?          string
      |     |  |  |  +--ro usascountfrcomp?   uint16
      |     |  |  |  +--rw usastotalcount?    uint16
      |     |  |  |  +--rw usas4pathlen?      uint16
      |     |  |  |  +--rw as4pathvalue?      string
      |     |  |  +--rw bgp-nexthop?   inet:ip-address
      |     |  |  +--rw bgp-med?                uint32
      |     |  |  +--rw bgp-localpref?          uint32
      |     |  |  +--rw bgp-atomic-aggregate?   uint32
      |     |  |  +--rw bgp-aggregator
      |     |  |  |  +--rw ulipaddress?   uint32
      |     |  |  |  +--rw ulasnumber?    uint32
      |     |  |  +--rw bgp-commattr
      |     |  |  |  +--rw uscommsize?       uint16
      |     |  |  |  +--rw ulrefcomm?        uint32
      |     |  |  |  +--rw commattr-value?   string
      |     |  |  +--rw bgp-extcommattr
      |     |  |  |  +--rw custom-community
      |     |  |  |  +--rw valid             boolean
      |     |  |  |  +--rw insertion-point uint32
      |     |  |  |  +--rw community-id       uint8
      |     |  |  |  +--rw cost-id            uint32
      |     |  |  |  +--rw usextcommsize?       uint16
      |     |  |  |  +--rw ulrefcount?          uint32
      |     |  |  |  +--rw extcommattr-value?   string
      |     |  |  +--rw bgp-clusterlist
      |     |  |  |  +--rw uscluslen?           uint16
      |     |  |  |  +--rw ulrefclus?           uint32
      |     |  |  |  +--rw clusterlist-value?   string
      |     |  |  +--rw bgp-originator-id?      uint32
      |     |  +--ro bgp-route-create?           enumeration



Wang, et al.             Expires April 26, 2015                [Page 53]

Internet-Draft                   BGP IM                     October 2014


      |     |  +--ro bgp-rt-state-info
      |     |  |  +--ro rib-current-state?      rib-state-def
      |     |  |  +--ro rib-last-state?         rib-state-def
      |     |  |  +--ro rib-rejected-reason?    enumeration
      |     |  |  +--ro not-preferred-reason?   enumeration
      |     |  +--rw (bgp-mvpn-route-type)?
      |     |     +--:(INTRA_AS_I_PMSI_AD)
      |     |     |  +--rw intra-as-i-pmsi-ad-route*
         [route-type route-distinguisher origin-router-ip-addr]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |     |     +--:(INTER_AS_I_PMSI_AD)
      |     |     |  +--rw inter_as_i_pmsi_as_route*
                     [route-type route-distinguisher source-as]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as           inet:as-number
      |     |     +--:(S_PMSI_AD)
      |     |     |  +--rw s-pmsi-ad-route*
                      [route-type route-distinguisher multicast-source
                               multicast-group origin-router-ip-addr]
      |     |     |     +--rw route-type           mvpn-route-type
      |     |     |     +--rw route-distinguisher  route-distinguisher-def
      |     |     |     +--rw multicast-source     inet:ip-prefix
      |     |     |     +--rw multicast-group      inet:ip-prefix
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(LEAF_AD)
      |     |     |  +--rw leaf-ad-route*
                [route-type route-key origin-router-ip-addr]
      |     |     |     +--rw route-type               mvpn-route-type
      |     |     |     +--rw route-key                binary
      |     |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |     |     +--:(SOURCE_ACTIVE_AD)
      |     |     |  +--rw source-active-ad-route*
                           [route-type route-distinguisher
                                multicast-source multicast-group]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw multicast-source    inet:ip-prefix
      |     |     |     +--rw multicast-group     inet:ip-prefix
      |     |     +--:(SHARED_TREE_JOIN)
      |     |     |  +--rw shared-tree-join-route*
                       [route-type route-distinguisher source-as
                                  multicast-source multicast-group]
      |     |     |     +--rw route-type             mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as              inet:as-number



Wang, et al.             Expires April 26, 2015                [Page 54]

Internet-Draft                   BGP IM                     October 2014


      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     +--:(SOURCE_TREE_JOIN)
      |     |        +--rw source-tree-join-route*
                          [route-type route-distinguisher source-as
                                  multicast-source multicast-group]
      |     |           +--rw route-type          mvpn-route-type
      |     |           +--rw route-distinguisher route-distinguisher-def
      |     |           +--rw source-as              inet:as-number
      |     |           +--rw multicast-source       inet:ip-prefix
      |     |           +--rw multicast-group        inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?          enumeration
      |        +--rw route-admin-distance  uint16
      |        +--rw bgp-attribute-list
      |        |  +--rw bgp-origin?           enumeration
      |        |  +--rw bgp-aspath
      |        |  |  +--rw usascount?         uint16
      |        |  |  +--rw ulrefcount?        uint16
      |        |  |  +--rw asstring?          string
      |        |  |  +--ro usascountfrcomp?   uint16
      |        |  |  +--rw usastotalcount?    uint16
      |        |  |  +--rw usas4pathlen?      uint16
      |        |  |  +--rw as4pathvalue?      string
      |        |  +--rw bgp-nexthop?            inet:ip-address
      |        |  +--rw bgp-med?                uint32
      |        |  +--rw bgp-localpref?          uint32
      |        |  +--rw bgp-atomic-aggregate?   uint32
      |        |  +--rw bgp-aggregator
      |        |  |  +--rw ulipaddress?   uint32
      |        |  |  +--rw ulasnumber?    uint32
      |        |  +--rw bgp-commattr
      |        |  |  +--rw uscommsize?       uint16
      |        |  |  +--rw ulrefcomm?        uint32
      |        |  |  +--rw commattr-value?   string
      |        |  +--rw bgp-extcommattr
      |        |  |  +--rw custom-community
      |        |  |  |  +--rw valid              boolean
      |        |  |  |  +--rw insertion-point uint32
      |        |  |  |  +--rw community-id       uint8
      |        |  |  |  +--rw cost-id            uint32
      |        |  |  +--rw usextcommsize?       uint16
      |        |  |  +--rw ulrefcount?          uint32
      |        |  |  +--rw extcommattr-value?   string
      |        |  +--rw bgp-clusterlist
      |        |  |  +--rw uscluslen?           uint16
      |        |  |  +--rw ulrefclus?           uint32
      |        |  |  +--rw clusterlist-value?   string



Wang, et al.             Expires April 26, 2015                [Page 55]

Internet-Draft                   BGP IM                     October 2014


      |        |  +--rw bgp-originator-id?      uint32
      |        +--ro bgp-route-create?           enumeration
      |        +--ro bgp-rt-state-info
      |        |  +--ro rib-current-state?      rib-state-def
      |        |  +--ro rib-last-state?         rib-state-def
      |        |  +--ro rib-rejected-reason?    enumeration
      |        |  +--ro not-preferred-reason?   enumeration
      |        +--rw (bgp-mvpn-route-type)?
      |           +--:(INTRA_AS_I_PMSI_AD)
      |           |  +--rw intra-as-i-pmsi-ad-route*
                 [route-type route-distinguisher origin-router-ip-addr]
      |           |     +--rw route-type           mvpn-route-type
      |           |     +--rw route-distinguisher  route-distinguisher-def
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(INTER_AS_I_PMSI_AD)
      |           |  +--rw inter_as_i_pmsi_as_route*
                            [route-type route-distinguisher source-as]
      |           |     +--rw route-type           mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw source-as              inet:as-number
      |           +--:(S_PMSI_AD)
      |           |  +--rw s-pmsi-ad-route*
                   [route-type route-distinguisher multicast-source
                            multicast-group origin-router-ip-addr]
      |           |     +--rw route-type            mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source         inet:ip-prefix
      |           |     +--rw multicast-group          inet:ip-prefix
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(LEAF_AD)
      |           |  +--rw leaf-ad-route*
                           [route-type route-key origin-router-ip-addr]
      |           |     +--rw route-type               mvpn-route-type
      |           |     +--rw route-key                binary
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(SOURCE_ACTIVE_AD)
      |           |  +--rw source-active-ad-route*
                          [route-type route-distinguisher
                               multicast-source multicast-group]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SHARED_TREE_JOIN)
      |           |  +--rw shared-tree-join-route*
                     [route-type route-distinguisher source-as
                            multicast-source multicast-group]
      |           |     +--rw route-type           mvpn-route-type



Wang, et al.             Expires April 26, 2015                [Page 56]

Internet-Draft                   BGP IM                     October 2014


      |           |     +--rw route-distinguisher  route-distinguisher-def
      |           |     +--rw source-as              inet:as-number
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SOURCE_TREE_JOIN)
      |              +--rw source-tree-join-route*
                     [route-type route-distinguisher source-as
                               multicast-source multicast-group]
      |                 +--rw route-type             mvpn-route-type
      |                 +--rw route-distinguisher route-distinguisher-def
      |                 +--rw source-as              inet:as-number
      |                 +--rw multicast-source       inet:ip-prefix
      |                 +--rw multicast-group        inet:ip-prefix
      +--rw bgp-mcast-vpls-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-type?       enumeration
      |  |  +--rw route-admin-distance  uint16
      |  |  +--rw bgp-attribute-list
      |  |  |  +--rw bgp-origin?        enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16
      |  |  |  |  +--rw asstring?          string
      |  |  |  |  +--ro usascountfrcomp?   uint16
      |  |  |  |  +--rw usastotalcount?    uint16
      |  |  |  |  +--rw usas4pathlen?      uint16
      |  |  |  |  +--rw as4pathvalue?      string
      |  |  |  +--rw bgp-nexthop?   inet:ip-address
      |  |  |  +--rw bgp-med?                uint32
      |  |  |  +--rw bgp-localpref?          uint32
      |  |  |  +--rw bgp-atomic-aggregate?   uint32
      |  |  |  +--rw bgp-aggregator
      |  |  |  |  +--rw ulipaddress?   uint32
      |  |  |  |  +--rw ulasnumber?    uint32
      |  |  |  +--rw bgp-commattr
      |  |  |  |  +--rw uscommsize?       uint16
      |  |  |  |  +--rw ulrefcomm?        uint32
      |  |  |  |  +--rw commattr-value?   string
      |  |  |  +--rw bgp-extcommattr
      |  |  |  |  +--rw custom-community
      |  |  |  |  |  +--rw valid             boolean
      |  |  |  |  |  +--rw insertion-point uint32



Wang, et al.             Expires April 26, 2015                [Page 57]

Internet-Draft                   BGP IM                     October 2014


      |  |  |  |  |  +--rw community-id       uint8
      |  |  |  |  |  +--rw cost-id            uint32
      |  |  |  |  +--rw usextcommsize?       uint16
      |  |  |  |  +--rw ulrefcount?          uint32
      |  |  |  |  +--rw extcommattr-value?   string
      |  |  |  +--rw bgp-clusterlist
      |  |  |  |  +--rw uscluslen?           uint16
      |  |  |  |  +--rw ulrefclus?           uint32
      |  |  |  |  +--rw clusterlist-value?   string
      |  |  |  +--rw bgp-originator-id?      uint32
      |  |  +--ro bgp-route-create?          enumeration
      |  |  +--ro bgp-rt-state-info
      |  |  |  +--ro rib-current-state?      rib-state-def
      |  |  |  +--ro rib-last-state?         rib-state-def
      |  |  |  +--ro rib-rejected-reason?    enumeration
      |  |  |  +--ro not-preferred-reason?   enumeration
      |  |  +--rw (bgp-mcast-vpls-route-type)?
      |  |     +--:(SELECTIVE_TREE_AD_ROUTE)
      |  |     |  +--rw selective-tree-ad-route
           [route-type route-distinguisher multicast-source
                      multicast-group origin-router-ip-addr]
      |  |     |     +--rw route-type        mcast-vpls-route-type
      |  |     |     +--rw route-distinguisher
                                         route-distinguisher-def
      |  |     |     +--rw multicast-source         inet:ip-prefix
      |  |     |     +--rw multicast-group          inet:ip-prefix
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(LEAF_AD)
      |  |        +--rw leaf-ad-route*
                       [route-type route-key origin-router-ip-addr]
      |  |           +--rw route-type        mcast-vpls-route-type
      |  |           +--rw route-key         binary
      |  |           +--rw origin-router-ip-addr    inet:ip-prefix
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason



Wang, et al.             Expires April 26, 2015                [Page 58]

Internet-Draft                   BGP IM                     October 2014


      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value?
                                             enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value?
                                              enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                              enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                              enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-route-type?       enumeration
      |     |  +--rw route-admin-distance  uint16
      |     |  +--rw bgp-attribute-list
      |     |  |  +--rw bgp-origin?        enumeration
      |     |  |  +--rw bgp-aspath
      |     |  |  |  +--rw usascount?         uint16
      |     |  |  |  +--rw ulrefcount?        uint16
      |     |  |  |  +--rw asstring?          string
      |     |  |  |  +--ro usascountfrcomp?   uint16
      |     |  |  |  +--rw usastotalcount?    uint16
      |     |  |  |  +--rw usas4pathlen?      uint16
      |     |  |  |  +--rw as4pathvalue?      string
      |     |  |  +--rw bgp-nexthop?            inet:ip-address
      |     |  |  +--rw bgp-med?                uint32
      |     |  |  +--rw bgp-localpref?          uint32
      |     |  |  +--rw bgp-atomic-aggregate?   uint32
      |     |  |  +--rw bgp-aggregator
      |     |  |  |  +--rw ulipaddress?   uint32
      |     |  |  |  +--rw ulasnumber?    uint32
      |     |  |  +--rw bgp-commattr



Wang, et al.             Expires April 26, 2015                [Page 59]

Internet-Draft                   BGP IM                     October 2014


      |     |  |  |  +--rw uscommsize?       uint16
      |     |  |  |  +--rw ulrefcomm?        uint32
      |     |  |  |  +--rw commattr-value?   string
      |     |  |  +--rw bgp-extcommattr
      |     |  |  |  +--rw custom-community
      |     |  |  |  |  +--rw valid              boolean
      |     |  |  |  |  +--rw insertion-point uint32
      |     |  |  |  |  +--rw community-id       uint8
      |     |  |  |  |  +--rw cost-id            uint32
      |     |  |  |  +--rw usextcommsize?       uint16
      |     |  |  |  +--rw ulrefcount?          uint32
      |     |  |  |  +--rw extcommattr-value?   string
      |     |  |  +--rw bgp-clusterlist
      |     |  |  |  +--rw uscluslen?           uint16
      |     |  |  |  +--rw ulrefclus?           uint32
      |     |  |  |  +--rw clusterlist-value?   string
      |     |  |  +--rw bgp-originator-id?      uint32
      |     |  +--ro bgp-route-create?          enumeration
      |     |  +--ro bgp-rt-state-info
      |     |  |  +--ro rib-current-state?      rib-state-def
      |     |  |  +--ro rib-last-state?         rib-state-def
      |     |  |  +--ro rib-rejected-reason?    enumeration
      |     |  |  +--ro not-preferred-reason?   enumeration
      |     |  +--rw (bgp-mcast-vpls-route-type)?
      |     |     +--:(SELECTIVE_TREE_AD_ROUTE)
      |     |     |  +--rw selective-tree-ad-route*
                 [route-type route-distinguisher multicast-source
                             multicast-group origin-router-ip-addr]
      |     |     |     +--rw route-type      mcast-vpls-route-type
      |     |     |     +--rw route-distinguisher
                                  route-distinguisher-def
      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(LEAF_AD)
      |     |        +--rw leaf-ad-route*
                       [route-type route-key origin-router-ip-addr]
      |     |           +--rw route-type     mcast-vpls-route-type
      |     |           +--rw route-key      binary
      |     |           +--rw origin-router-ip-addr  inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?       enumeration
      |        +--rw route-admin-distance  uint16
      |        +--rw bgp-attribute-list
      |        |  +--rw bgp-origin?        enumeration
      |        |  +--rw bgp-aspath
      |        |  |  +--rw usascount?         uint16
      |        |  |  +--rw ulrefcount?        uint16



Wang, et al.             Expires April 26, 2015                [Page 60]

Internet-Draft                   BGP IM                     October 2014


      |        |  |  +--rw asstring?          string
      |        |  |  +--ro usascountfrcomp?   uint16
      |        |  |  +--rw usastotalcount?    uint16
      |        |  |  +--rw usas4pathlen?      uint16
      |        |  |  +--rw as4pathvalue?      string
      |        |  +--rw bgp-nexthop?            inet:ip-address
      |        |  +--rw bgp-med?                uint32
      |        |  +--rw bgp-localpref?          uint32
      |        |  +--rw bgp-atomic-aggregate?   uint32
      |        |  +--rw bgp-aggregator
      |        |  |  +--rw ulipaddress?   uint32
      |        |  |  +--rw ulasnumber?    uint32
      |        |  +--rw bgp-commattr
      |        |  |  +--rw uscommsize?       uint16
      |        |  |  +--rw ulrefcomm?        uint32
      |        |  |  +--rw commattr-value?   string
      |        |  +--rw bgp-extcommattr
      |        |  |  +--rw custom-community
      |        |  |  |  +--rw valid              boolean
      |        |  |  |  +--rw insertion-point uint32
      |        |  |  |  +--rw community-id       uint8
      |        |  |  |  +--rw cost-id            uint32
      |        |  |  +--rw usextcommsize?       uint16
      |        |  |  +--rw ulrefcount?          uint32
      |        |  |  +--rw extcommattr-value?   string
      |        |  +--rw bgp-clusterlist
      |        |  |  +--rw uscluslen?           uint16
      |        |  |  +--rw ulrefclus?           uint32
      |        |  |  +--rw clusterlist-value?   string
      |        |  +--rw bgp-originator-id?      uint32
      |        +--ro bgp-route-create?          enumeration
      |        +--ro bgp-rt-state-info
      |        |  +--ro rib-current-state?      rib-state-def
      |        |  +--ro rib-last-state?         rib-state-def
      |        |  +--ro rib-rejected-reason?    enumeration
      |        |  +--ro not-preferred-reason?   enumeration
      |        +--rw (bgp-mcast-vpls-route-type)?
      |           +--:(SELECTIVE_TREE_AD_ROUTE)
      |           |  +--rw selective-tree-ad-route*
                 [route-type route-distinguisher multicast-source
                        multicast-group origin-router-ip-addr]
      |           |     +--rw route-type          mcast-vpls-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source    inet:ip-prefix
      |           |     +--rw multicast-group     inet:ip-prefix
      |           |     +--rw origin-router-ip-addr inet:ip-prefix
      |           +--:(LEAF_AD)
      |              +--rw leaf-ad-route*



Wang, et al.             Expires April 26, 2015                [Page 61]

Internet-Draft                   BGP IM                     October 2014


                        [route-type route-key origin-router-ip-addr]
      |                 +--rw route-type     mcast-vpls-route-type
      |                 +--rw route-key      binary
      |                 +--rw origin-router-ip-addr  inet:ip-prefix
      +--rw bgp-evpn-instance
         +--rw bgp-instance-name?     string
         +--rw bgp-instance-create?   enumeration
         +--rw bgp-instance-type?     enumeration
         +--rw bgp-vendor-type?       enumeration
         +--rw afi?                   afi-def
         +--rw safi?                  safi-def
         +--rw bgp-local-rib
         |  +--rw bgp-route-type?       enumeration
         |  +--rw route-admin-distance  uint16
         |  +--rw bgp-attribute-list
         |  |  +--rw bgp-origin?        enumeration
         |  |  +--rw bgp-aspath
         |  |  |  +--rw usascount?         uint16
         |  |  |  +--rw ulrefcount?        uint16
         |  |  |  +--rw asstring?          string
         |  |  |  +--ro usascountfrcomp?   uint16
         |  |  |  +--rw usastotalcount?    uint16
         |  |  |  +--rw usas4pathlen?      uint16
         |  |  |  +--rw as4pathvalue?      string
         |  |  +--rw bgp-nexthop?            inet:ip-address
         |  |  +--rw bgp-med?                uint32
         |  |  +--rw bgp-localpref?          uint32
         |  |  +--rw bgp-atomic-aggregate?   uint32
         |  |  +--rw bgp-aggregator
         |  |  |  +--rw ulipaddress?   uint32
         |  |  |  +--rw ulasnumber?    uint32
         |  |  +--rw bgp-commattr
         |  |  |  +--rw uscommsize?       uint16
         |  |  |  +--rw ulrefcomm?        uint32
         |  |  |  +--rw commattr-value?   string
         |  |  +--rw bgp-extcommattr
         |  |  |  +--rw custom-community
         |  |  |  |  +--rw valid             boolean
         |  |  |  |  +--rw insertion-point uint32
         |  |  |  |  +--rw community-id       uint8
         |  |  |  |  +--rw cost-id            uint32
         |  |  |  +--rw usextcommsize?       uint16
         |  |  |  +--rw ulrefcount?          uint32
         |  |  |  +--rw extcommattr-value?   string
         |  |  +--rw bgp-clusterlist
         |  |  |  +--rw uscluslen?           uint16
         |  |  |  +--rw ulrefclus?           uint32
         |  |  |  +--rw clusterlist-value?   string



Wang, et al.             Expires April 26, 2015                [Page 62]

Internet-Draft                   BGP IM                     October 2014


         |  |  +--rw bgp-originator-id?      uint32
         |  +--ro bgp-route-create?            enumeration
         |  +--ro bgp-rt-state-info
         |  |  +--ro rib-current-state?      rib-state-def
         |  |  +--ro rib-last-state?         rib-state-def
         |  |  +--ro rib-rejected-reason?    enumeration
         |  |  +--ro not-preferred-reason?   enumeration
         |  +--rw (bgp-evpn-route-type)?
         |     +--:(EVPN_AD_ROUTE)
         |     |  +--rw evpn-ad-route*
             [route-type route-distinguisher esi eth-tag-id]
         |     |     +--rw route-type             evpn-route-type
         |     |     +--rw route-distinguisher route-distinguisher-def
         |     |     +--rw esi                    string
         |     |     +--rw eth-tag-id             uint32
         |     +--:(EVPN_MAC_ROUTE)
         |     |  +--rw evpn-mac-route*
               [route-type route-distinguisher esi eth-tag-id
           mac-length mac-address ip-address-length ip-address]
         |     |     +--rw route-type          evpn-route-type
         |     |     +--rw route-distinguisher route-distinguisher-def
         |     |     +--rw esi                 string
         |     |     +--rw eth-tag-id          uint32
         |     |     +--rw mac-length          uint8
         |     |     +--rw mac-address         yang:mac-address
         |     |     +--rw ip-address-length   uint8
         |     |     +--rw ip-address          inet:ip-address
         |     |     +--rw label1?             uint32
         |     |     +--rw label2?             uint32
         |     +--:(EVPN_INC_MCAST_TREE)
         |     |  +--rw evpn-inc-mcast-tree-route*
                 [route-type route-distinguisher eth-tag-id
                     ip-address-length origin-router-ip-addr]
         |     |     +--rw route-type          evpn-route-type
         |     |     +--rw route-distinguisher route-distinguisher-def
         |     |     +--rw eth-tag-id          uint32
         |     |     +--rw ip-address-length   uint8
         |     |     +--rw origin-router-ip-addr  inet:ip-prefix
         |     +--:(EVPN_ETH_SEGMENT_ROUTE)
         |        +--rw evpn-eth-segment-route*
                        [route-type route-distinguisher esi
                            ip-address-length origin-router-ip-addr]
         |           +--rw route-type           evpn-route-type
         |           +--rw route-distinguisher  route-distinguisher-def
         |           +--rw esi                  string
         |           +--rw ip-address-length    uint8
         |           +--rw origin-router-ip-addr inet:ip-prefix
         +--rw bgp-peer-list* [bgp-peer-name]



Wang, et al.             Expires April 26, 2015                [Page 63]

Internet-Draft                   BGP IM                     October 2014


            +--rw peer-session-address
            |  +--rw local-ipv4-address?  inet:ipv4-prefix
            |  +--rw remote-ipv4-address? inet:ipv4-prefix
            +--rw bgp-peer-name           string
            +--ro bgp-peer-type?          enumeration
            +--ro bgp-peer-create?        enumeration
            +--rw bgp-policy-in
            +--rw bgp-policy-out
            +--ro peer-policy-in-pset
            +--ro peer-policy-out-pset
            +--rw peer-state-info
            |  +--ro peer-current-state?         peer-state
            |  +--ro peer-last-state?            peer-state
            |  +--ro peer-down-reason
            |  |  +--ro error-code?       enumeration
            |  |  +--ro sub-error-code
            |  |     +--ro (sub-error-code-type)?
            |  |        +--:(head-error-sub-code)
            |  |        |  +--ro head-error-sub-value? enumeration
            |  |        +--:(open-error-sub-code)
            |  |        |  +--ro open-error-sub-value? enumeration
            |  |        +--:(update-error-sub-code)
            |  |        |  +--ro update-error-sub-value? enumeration
            |  |        +--:(route-refresh-error-sub-code)
            |  |           +--ro route-refresh-error-sub-value?
                                                        enumeration
            |  +--ro peer-received-update-cnt?   uint64
            |  +--ro peer-transmit-update-cnt?   uint64
            |  +--ro peer-received-route-cnt?    uint64
            |  +--ro peer-send-route-cnt?        uint64
            |  +--rw max-prefix-rcv-limit?       uint64
            |  +--rw max-prefix-xmt-limit?       uint64
            |  +--ro peer-prefix-high?           uint64
            |  +--ro peer-prefix-low?            uint64
            |  +--ro peer-perfix-ave?            uint64
            |  +--ro peer-prefix-time?           uint64
            |  +--ro peer-prefix-max?            uint64
            |  +--ro publish-version?            uint64
            +--rw bgp-rib-in
            |  +--rw bgp-route-type?       enumeration
            |  +--rw route-admin-distance  uint16
            |  +--rw bgp-attribute-list
            |  |  +--rw bgp-origin?        enumeration
            |  |  +--rw bgp-aspath
            |  |  |  +--rw usascount?         uint16
            |  |  |  +--rw ulrefcount?        uint16
            |  |  |  +--rw asstring?          string
            |  |  |  +--ro usascountfrcomp?   uint16



Wang, et al.             Expires April 26, 2015                [Page 64]

Internet-Draft                   BGP IM                     October 2014


            |  |  |  +--rw usastotalcount?    uint16
            |  |  |  +--rw usas4pathlen?      uint16
            |  |  |  +--rw as4pathvalue?      string
            |  |  +--rw bgp-nexthop?            inet:ip-address
            |  |  +--rw bgp-med?                uint32
            |  |  +--rw bgp-localpref?          uint32
            |  |  +--rw bgp-atomic-aggregate?   uint32
            |  |  +--rw bgp-aggregator
            |  |  |  +--rw ulipaddress?   uint32
            |  |  |  +--rw ulasnumber?    uint32
            |  |  +--rw bgp-commattr
            |  |  |  +--rw uscommsize?       uint16
            |  |  |  +--rw ulrefcomm?        uint32
            |  |  |  +--rw commattr-value?   string
            |  |  +--rw bgp-extcommattr
            |  |  |  +--rw custom-community
            |  |  |  |  +--rw valid              boolean
            |  |  |  |  +--rw insertion-point uint32
            |  |  |  |  +--rw community-id       uint8
            |  |  |  |  +--rw cost-id            uint32
            |  |  |  +--rw usextcommsize?       uint16
            |  |  |  +--rw ulrefcount?          uint32
            |  |  |  +--rw extcommattr-value?   string
            |  |  +--rw bgp-clusterlist
            |  |  |  +--rw uscluslen?           uint16
            |  |  |  +--rw ulrefclus?           uint32
            |  |  |  +--rw clusterlist-value?   string
            |  |  +--rw bgp-originator-id?      uint32
            |  +--ro bgp-route-create?            enumeration
            |  +--ro bgp-rt-state-info
            |  |  +--ro rib-current-state?      rib-state-def
            |  |  +--ro rib-last-state?         rib-state-def
            |  |  +--ro rib-rejected-reason?    enumeration
            |  |  +--ro not-preferred-reason?   enumeration
            |  +--rw (bgp-evpn-route-type)?
            |     +--:(EVPN_AD_ROUTE)
            |     |  +--rw evpn-ad-route*
                 [route-type route-distinguisher esi eth-tag-id]
            |     |     +--rw route-type             evpn-route-type
            |     |     +--rw route-distinguisher route-distinguisher-def
            |     |     +--rw esi                    string
            |     |     +--rw eth-tag-id             uint32
            |     +--:(EVPN_MAC_ROUTE)
            |     |  +--rw evpn-mac-route*
                       [route-type route-distinguisher esi eth-tag-id
                    mac-length mac-address ip-address-length ip-address]
            |     |     +--rw route-type             evpn-route-type
            |     |     +--rw route-distinguisher route-distinguisher-def



Wang, et al.             Expires April 26, 2015                [Page 65]

Internet-Draft                   BGP IM                     October 2014


            |     |     +--rw esi                    string
            |     |     +--rw eth-tag-id             uint32
            |     |     +--rw mac-length             uint8
            |     |     +--rw mac-address            yang:mac-address
            |     |     +--rw ip-address-length      uint8
            |     |     +--rw ip-address             inet:ip-address
            |     |     +--rw label1?                uint32
            |     |     +--rw label2?                uint32
            |     +--:(EVPN_INC_MCAST_TREE)
            |     |  +--rw evpn-inc-mcast-tree-route*
                      [route-type route-distinguisher eth-tag-id
                         ip-address-length origin-router-ip-addr]
            |     |     +--rw route-type               evpn-route-type
            |     |     +--rw route-distinguisherroute-distinguisher-def
            |     |     +--rw eth-tag-id               uint32
            |     |     +--rw ip-address-length        uint8
            |     |     +--rw origin-router-ip-addr    inet:ip-prefix
            |     +--:(EVPN_ETH_SEGMENT_ROUTE)
            |        +--rw evpn-eth-segment-route*
                         [route-type route-distinguisher esi
                           ip-address-length origin-router-ip-addr]
            |           +--rw route-type               evpn-route-type
            |           +--rw route-distinguisher route-distinguisher-def
            |           +--rw esi                      string
            |           +--rw ip-address-length        uint8
            |           +--rw origin-router-ip-addr    inet:ip-prefix
            +--rw bgp-rib-out
               +--rw bgp-route-type?       enumeration
               +--rw route-admin-distance  uint16
               +--rw bgp-attribute-list
               |  +--rw bgp-origin?        enumeration
               |  +--rw bgp-aspath
               |  |  +--rw usascount?         uint16
               |  |  +--rw ulrefcount?        uint16
               |  |  +--rw asstring?          string
               |  |  +--ro usascountfrcomp?   uint16
               |  |  +--rw usastotalcount?    uint16
               |  |  +--rw usas4pathlen?      uint16
               |  |  +--rw as4pathvalue?      string
               |  +--rw bgp-nexthop?            inet:ip-address
               |  +--rw bgp-med?                uint32
               |  +--rw bgp-localpref?          uint32
               |  +--rw bgp-atomic-aggregate?   uint32
               |  +--rw bgp-aggregator
               |  |  +--rw ulipaddress?   uint32
               |  |  +--rw ulasnumber?    uint32
               |  +--rw bgp-commattr
               |  |  +--rw uscommsize?       uint16



Wang, et al.             Expires April 26, 2015                [Page 66]

Internet-Draft                   BGP IM                     October 2014


               |  |  +--rw ulrefcomm?        uint32
               |  |  +--rw commattr-value?   string
               |  +--rw bgp-extcommattr
               |  |  +--rw custom-community
               |  |  |  +--rw valid              boolean
               |  |  |  +--rw insertion-point uint32
               |  |  |  +--rw community-id       uint8
               |  |  |  +--rw cost-id            uint32
               |  |  +--rw usextcommsize?       uint16
               |  |  +--rw ulrefcount?          uint32
               |  |  +--rw extcommattr-value?   string
               |  +--rw bgp-clusterlist
               |  |  +--rw uscluslen?           uint16
               |  |  +--rw ulrefclus?           uint32
               |  |  +--rw clusterlist-value?   string
               |  +--rw bgp-originator-id?      uint32
               +--ro bgp-route-create?            enumeration
               +--ro bgp-rt-state-info
               |  +--ro rib-current-state?      rib-state-def
               |  +--ro rib-last-state?         rib-state-def
               |  +--ro rib-rejected-reason?    enumeration
               |  +--ro not-preferred-reason?   enumeration
               +--rw (bgp-evpn-route-type)?
                  +--:(EVPN_AD_ROUTE)
                  |  +--rw evpn-ad-route*
                   [route-type route-distinguisher esi eth-tag-id]
                  |     +--rw route-type             evpn-route-type
                  |     +--rw route-distinguisher route-distinguisher-def
                  |     +--rw esi                    string
                  |     +--rw eth-tag-id             uint32
                  +--:(EVPN_MAC_ROUTE)
                  |  +--rw evpn-mac-route*
                      [route-type route-distinguisher esi eth-tag-id
                      mac-length mac-address ip-address-length ip-address]
                  |     +--rw route-type             evpn-route-type
                  |     +--rw route-distinguisher route-distinguisher-def
                  |     +--rw esi                    string
                  |     +--rw eth-tag-id             uint32
                  |     +--rw mac-length             uint8
                  |     +--rw mac-address            yang:mac-address
                  |     +--rw ip-address-length      uint8
                  |     +--rw ip-address             inet:ip-address
                  |     +--rw label1?                uint32
                  |     +--rw label2?                uint32
                  +--:(EVPN_INC_MCAST_TREE)
                  |  +--rw evpn-inc-mcast-tree-route*
                        [route-type route-distinguisher eth-tag-id
                                 ip-address-length origin-router-ip-addr]



Wang, et al.             Expires April 26, 2015                [Page 67]

Internet-Draft                   BGP IM                     October 2014


                  |     +--rw route-type               evpn-route-type
                  |     +--rw route-distinguisherroute-distinguisher-def
                  |     +--rw eth-tag-id               uint32
                  |     +--rw ip-address-length        uint8
                  |     +--rw origin-router-ip-addr    inet:ip-prefix
                  +--:(EVPN_ETH_SEGMENT_ROUTE)
                     +--rw evpn-eth-segment-route*
                             [route-type route-distinguisher esi
                                ip-address-length origin-router-ip-addr]
                        +--rw route-type               evpn-route-type
                        +--rw route-distinguisher   route-distinguisher-def
                        +--rw esi                      string
                        +--rw ip-address-length        uint8
                        +--rw origin-router-ip-addr    inet:ip-prefix

4.  BGP Yang description


//<code begins> file "i2rs bgp@2014-09-30.yang"

module bgp-protocol  {

  namespace "urn:huawei:params:xml:ns:yang:rt:i2rs:bgp";
    // replace with iana namespace when assigned
    prefix "bgp-protocol";

  import ietf-inet-types {
    prefix inet;
    //rfc6991
  }
  import ietf-yang-types {
    prefix yang;
    //RFC6991
  }

  organization
    "huawei technologies co., ltd. ";
  contact
     "email: wanglixing@huawei.com
      email: shares@ndzh.com
      email: zhuangshunwan@huawei.com";

    description
      "
        terms and acronyms

        isis (isis):




Wang, et al.             Expires April 26, 2015                [Page 68]

Internet-Draft                   BGP IM                     October 2014


        ip (ip): internet protocol

        ipv4 (ipv4):internet protocol version 4

        ipv6 (ipv6): internet protocol version 6

        metric(metric): multi exit discriminator

        igp (igp): interior gateway protocol

        mtu (mtu) maximum transmission unit
       ";


  revision "2014-08-22" {
    description "initial revision";
    reference "draft-hares-i2rs-bgp-im-00";
  }

/*common definition wanglixing*/
  typedef afi-def {
    description
      "afi is address family,it can be write and read.";
    type enumeration {
      enum "ipv4";
      enum "ipv6";
      enum "l2vpn";
    }
  }

  typedef safi-def {
    description
      "afi is sub-address family,it can be write and read. ";
    type enumeration {
      enum "unicast";
      enum "multicast";
      enum "l3vpn";
      enum "mpls";
      enum "mvpn";
      enum "rt-constrain";
      enum "ipv4-flow-spec";
      enum "vpnv4-flow-spec";
      enum "clns-vpn";
      enum "ng-mvpn";
      enum "mdt-safi";
    }
  }




Wang, et al.             Expires April 26, 2015                [Page 69]

Internet-Draft                   BGP IM                     October 2014


  typedef mvpn-route-type {
    reference "http://tools.ietf.org/html/rfc6514#section-4";
      type enumeration {
        enum INTRA_AS_I_PMSI_AD {
          value 1;
        }
        enum INTER_AS_I_PMSI_AD {
          value 2;
        }
        enum S_PMSI_AD {
          value 3;
        }
        enum LEAF_AD {
          value 4;
        }
        enum SOURCE_ACTIVE_AD {
          value 5;
        }
        enum SHARED_TREE_JOIN {
          value 6;
        }
        enum SOURCE_TREE_JOIN {
          value 7;
        }
     }
  }

  typedef mcast-vpls-route-type {
    reference "http://tools.ietf.org/html/rfc7117#section-9.2";
      type enumeration {
        enum SELECTIVE_TREE_AD_ROUTE {
          value 3;
        }
        enum LEAF_AD {
          value 4;
        }
     }
  }

  typedef evpn-route-type {
    reference "draft-ietf-l2vpn-evpn-08";
      type enumeration {
        enum EVPN_AD_ROUTE {
          value 1;
        }
        enum EVPN_MAC_ROUTE {
          value 2;
        }



Wang, et al.             Expires April 26, 2015                [Page 70]

Internet-Draft                   BGP IM                     October 2014


        enum EVPN_INC_MCAST_TREE {
          value 3;
        }
        enum EVPN_ETH_SEGMENT_ROUTE {
          value 4;
        }
     }
  }

  typedef bgp-route-create-mode {
    description
      "the way of creating of bgp route.";
    type enumeration {
      enum "not-i2rs-route";
      enum "i2rsclient-create-bgp-route";
      enum "i2rsagent-fails-bgp-route-create";
      enum "i2rsagent-created-bgp-route";
      enum "i2rsagent-bgp-route-create";
      enum "i2rsagent-rejects-bgp-route-create";
      enum "i2rsagent-attempts-bgp-route-create";
    }
  }

  typedef bgp-route-type-def {
    type enumeration {
      enum "bgp-route-type-rd";
      enum "bgp-route-type-ipv4";
      enum "bgp-route-type-ipv6";
      enum "bgp-labeled-ipv4";
      enum "bgp-labeled-ipv6";
      enum "bgp-route-type-flow";
      enum "bgp-route-type-evpn";
      enum "bgp-route-type-mvpn";
      enum "bgp-route-type-vpls";
      enum "bgp-route-type-bgp-ls";
      enum "bgp-route-type-l2vpn-signaling-nlri";
      enum "bgp-rt-constraint";
      enum "pw-route";
    }
  }
  typedef peer-state {
    type enumeration {
      enum "established";
      enum "idle";
      enum "connect";
      enum "active";
      enum "open-send";
      enum "open-confirm";



Wang, et al.             Expires April 26, 2015                [Page 71]

Internet-Draft                   BGP IM                     October 2014


    }
  }

  typedef rib-state-def {
    type enumeration {
      enum "active";
      enum "in-active";
      enum "primary";
      enum "backup";
      enum "suppress flap dampened";
      enum "suppress non-flap dampen";
      enum "active on altrenative best path";
    }
  }

    typedef mpls-label-def {
      description
        "label of the vrf.";
      type uint32 {
        range "16..1048574";
      }
    }

    typedef route-distinguisher-def {
    description
      "the route-distinguisher command configures a route distinguisher (rd)
       for the ipv4 or ipv6 address family of a vpn instance.
       format is asn:nn or ip-address:nn.";
    type string {
      length "3..21";
    }
  }


  grouping bgp-instance-commom {
    description
      "the common structure of bgp instance.";

    leaf bgp-instance-name {
      type string;
    }

    leaf bgp-instance-create {
    type enumeration {
      enum "not-i2rs";
      enum "i2rsclient-create-bgp-instance";
      enum "i2rsagent-fails-bgp-instance-create";
      enum "i2rsagent-created-bgp-instance";



Wang, et al.             Expires April 26, 2015                [Page 72]

Internet-Draft                   BGP IM                     October 2014


      enum "i2rsagent-bgp-instance-create";
      enum "i2rsagent-rejects-bgp-instance-create";
      enum "i2rsagent-attempts-bgp-instance-create";
    }
    }

    leaf bgp-instance-type {
      type enumeration {
        enum "bgp-ipv4-uni";
        enum "bgp-ipv4-multi";
        enum "bgp-ipv4-l3vpn";
        enum "bgp-ipv4-mvpn";
        enum "bgp-vpls";
        enum "bgp-mdt";
        enum "bgp-evpn";
        enum "bgp-ls";
        enum "bgp-ipv4-mpls-vpn";
        enum "bgp-ipv4-mpls-mvpn";
        enum "bgp-route-target";
        enum "bgp-ipv4-flow";
        enum "bgp-ipv4-vpn-flow";
        enum "bgp-ipv4-vrf-list";
        enum "bgp-ipv6-vrf-list";
        enum "bgp-ipv6-uni";
        enum "bgp-ipv6-vpnv6";
      }
    }

    leaf bgp-vendor-type {
      type enumeration {
        enum "cisco";
        enum "huawei";
      }
    }

    leaf afi {
      type afi-def;
    }

    leaf safi {
      type safi-def;
    }

  }



  grouping bgp-route-common {



Wang, et al.             Expires April 26, 2015                [Page 73]

Internet-Draft                   BGP IM                     October 2014


    leaf bgp-route-type {
      type enumeration {
      enum "bgp-route-type-rd";
      enum "bgp-route-type-ipv4";
      enum "bgp-route-type-ipv6";
      enum "bgp-labeled-ipv4";
      enum "bgp-labeled-ipv6";
      enum "bgp-route-type-flow";
      enum "bgp-route-type-evpn";
      enum "bgp-route-type-mvpn";
      enum "bgp-route-type-vpls";
      enum "bgp-route-type-bgp-ls";
      enum "bgp-route-type-l2vpn-signaling-nlri";
      enum "bgp-rt-constraint";
      enum "pw-route";
      }
     leaf route-admin-distance
       byte uint16:
    }

   grouping bgp-ext-custom-community {
     leaf valid {
     description
      "valid custom community";

      type boolean;
     }
     leaf insertion-point {
     description
       "place community inserted.";

       type uint32;
     }
     leaf community-id {
     description
      "custom community identifier.";

      type uint8;
      }
     leaf cost-id {
     descriptoin
       "cost identifier.";

      leaf uint32;
      }
     }





Wang, et al.             Expires April 26, 2015                [Page 74]

Internet-Draft                   BGP IM                     October 2014


    container bgp-attribute-list {
      leaf bgp-origin {
        type enumeration {
          enum "bgp-originattr-igp";
          enum "bgp-originattr-egp";
          enum "bgp-originattr-incomplete";
        }
      }

      container bgp-aspath {
        leaf usascount {
          description
            "number of as's in the as path, exclude
             confed-sequence and confed-set.";

          type uint16;
        }
        leaf ulrefcount {
          description
            "reference count to this aspath.";

          type uint16;
        }
        leaf asstring {
          type string;
        }

        leaf usascountfrcomp {
          description
            "the count used for selecting best route,
            all as-seq + 1(if exist as-set) or 0 (if no as-set),
            ignore conf-as type.";

          config "false";
          type uint16;
        }

        leaf usastotalcount {
          description
            "for as-path-limit.";
          type uint16;
        }
        leaf usas4pathlen {
          description
            " length of pucas4pathvalue, tlv's l.";
          type uint16;
        }




Wang, et al.             Expires April 26, 2015                [Page 75]

Internet-Draft                   BGP IM                     October 2014


        leaf as4pathvalue {
          type string;
        }

      }//end of "container bgp-aspath"

      leaf bgp-nexthop {
        type inet:ip-address;
      }

      leaf bgp-med {
        type uint32;
      }

      leaf bgp-localpref {
        type uint32;              }

      leaf bgp-atomic-aggregate {
        type uint32;
      }

      container bgp-aggregator {
        leaf ulipaddress {
          description
            "ip address formed the aggregate route.";
          type uint32;
        }
        leaf ulasnumber {
          description
            "last as number that formed the aggregate route";
          type uint32;
        }
      }

      container bgp-commattr {

        leaf ulrefcomm {
          description
            "number of routes having the same community value.";

          type uint32;
        }
        leaf commattr-value {
          description
            "community value.";

          type string;
        }



Wang, et al.             Expires April 26, 2015                [Page 76]

Internet-Draft                   BGP IM                     October 2014


      }

      container custom-communty {
          leaf valid {
          description
            "custom community is valid." ;

          type boolean;
        }
          leaf
      container bgp-extcommattr {
        uses bgp-ext-custom-community;
        leaf usextcommsize {
          description
            "number of communities.";

          type uint16;
        }
        leaf ulrefcount {
          description
            "number of routes having the same community value.";

          type uint32;
        }
        leaf extcommattr-value {
          description
            "community value.";

          type string;
        }
      } //end of "container bgp-extcommattr"

      container bgp-clusterlist {
        leaf uscluslen {
          description
            "length of cluster list.";

          type uint16;
        }
        leaf ulrefclus {
          description
            "count of number of routes referring to this
             cluster list.";

          type uint32;
        }
        leaf clusterlist-value {
          description



Wang, et al.             Expires April 26, 2015                [Page 77]

Internet-Draft                   BGP IM                     October 2014


            "cluster list values.";

          type string;
        }
      }

      leaf bgp-originator-id {
        description
          "ip address of the originator id.";

        type uint32;
      }

    }


    leaf bgp-route-create {
      description
        "the way of creating of bgp route.";
      type enumeration {
        enum "not-i2rs-route";
        enum "i2rsclient-create-bgp-route";
        enum "i2rsagent-fails-bgp-route-create";
        enum "i2rsagent-created-bgp-route";
        enum "i2rsagent-bgp-route-create";
        enum "i2rsagent-rejects-bgp-route-create";
        enum "i2rsagent-attempts-bgp-route-create";
      }
      config false;
    }

    container bgp-rt-state-info {
      config false;
      leaf rib-current-state{
        type rib-state-def;
        config false;
      }
      leaf rib-last-state{
        type rib-state-def;
        config false;
      }
      leaf rib-rejected-reason {
        description
          "the way of creating of bgp route.";
        type enumeration {
          enum "peer-withdraw";
          enum "policy-results";
          enum "nexthop-unreachable";



Wang, et al.             Expires April 26, 2015                [Page 78]

Internet-Draft                   BGP IM                     October 2014


          enum "malformed-peer-down";
          enum "malformed-discard";
          enum "malformed-ignore";
        }
        config false;
      }
      leaf not-preferred-reason {
        type enumeration {
          enum "peer-address";
          enum "router-id";
          enum "cluster-list-length";
          enum "igp-metric";
          enum "peer-type";
          enum "origin";
          enum "weight-or-preferred-value";
          enum "local-preference";
          enum "route-type";
          enum "as-path-length";
          enum "med";
          enum "flap-dampened route";
          enum "not-this-path-prefix-uses-alt-best-path";
          enum "overlapping-route-marked-to-remove";
        }
        config false;
      }
    }


  }




  grouping bgp-peer-common {

    leaf bgp-peer-name {
      type string;
    }

    leaf bgp-peer-type {
      description
        "the bgp-peer-type provides a list of bgp peer type found within the bgp instances
        associated with the bgp protocol function on the device  associated with the i2rs agent.
        these can be asbr (as border router e-bgp), pe (provider edge e-bgp), ibgp peer,
        or rr (route reflector).";
     type enumeration {
       enum "asbr";
       enum "ibgp";



Wang, et al.             Expires April 26, 2015                [Page 79]

Internet-Draft                   BGP IM                     October 2014


       enum "rr";
       enum "rr-client";
       enum "pe";
       enum "ce";
       enum "bgp-vendor-types";
       enum "bgp-vendor-type";
      }
      config false;
    }

    leaf bgp-peer-create {
      description
        "provides the i2rs creation status for this peer as: not-created by
        i2rs, requested by client but not processed, or an i2rs agent's
        response to the request: (agent reject peer creation, agent
        attempting peer creation, agent failed peer creation, and agent
        created bgp peer).";
      type enumeration {
        enum "not-i2rs-created-peer";
        enum "i2rsclient-bgp-peer-create-request";
        enum "i2rsagent-rejects-bgp-peer-create";
        enum "i2rsagent-attempts-bgp-instance-create";
        enum "i2rsagent-fails-bgp-instance-create";
        enum "i2rsagent-created-bgp-peer";
      }
      config false;
    }
    container bgp-policy-in {

    }
    container bgp-policy-out {

    }
    container peer-policy-in-pset {
      description "this is the variable the i2rs client reads to receive the full policy-
      set used for this bgp peers inbound policy.  the i2rs agent must
      to keep this policy variable in-sync with the i2rs peer-policy-in.";
      config false;
    }
    container peer-policy-out-pset {
      description "this is the variable the i2rs client reads to receive the full policy-
      set used for this bgp peers inbound policy.  the i2rs agent must
      to keep this policy variable in-sync with the i2rs peer- policy-out.";
      config false;
    }
    container peer-state-info {
      description "the  current state of the bgp peer in the bgp state machine.";
      leaf peer-current-state {



Wang, et al.             Expires April 26, 2015                [Page 80]

Internet-Draft                   BGP IM                     October 2014


        type peer-state;
        config false;
      }
      leaf peer-last-state {
        description "the  last state of the bgp peer according to the bgp state machine.";
        type peer-state;
        config false;
      }

      container peer-down-reason {
        description "the error code and sub-error code of the last peer down.";
        leaf error-code {
          type enumeration {
            enum message-header-error {
              value "1";
            }
            enum open-message-error {
              value "2";
            }
            enum update-message-error {
              value "3";
            }
            enum hold-timer-expired {
              value "4";
            }
            enum finite-state-machine-error {
              value "5";
            }
            enum cease {
              value "6";
            }
            enum route-refresh-error {
              value "7";
            }
          }
        }
        container sub-error-code {
          choice sub-error-code-type {
            case head-error-sub-code{
              leaf head-error-sub-value {
                type enumeration {
                  enum connection-not-synchronized {
                    value "1";
                  }
                  enum bad-message-length {
                    value "2";
                  }
                  enum bad-message-type {



Wang, et al.             Expires April 26, 2015                [Page 81]

Internet-Draft                   BGP IM                     October 2014


                    value "3";
                  }
                }
              }
            }
            case open-error-sub-code{
              leaf open-error-sub-value {
                type enumeration {
                  enum unsupported-version-number {
                    value "1";
                  }
                  enum bad-peer-as {
                    value "2";
                  }
                  enum bad-bgp-identifier {
                    value "3";
                  }
                  enum unsupported-optional-parameter {
                    value "4";
                  }
                  enum deprecated-see-appendix-a {
                    value "5";
                  }
                  enum unacceptable-hold-time {
                    value "6";
                  }
                }
              }
            }
            case update-error-sub-code{
              leaf update-error-sub-value {
                type enumeration {
                  enum malformed-attribute-list {
                    value "1";
                  }
                  enum unrecognized-well-known-attribute {
                    value "2";
                  }
                  enum missing-well-known-attribute {
                    value "3";
                  }
                  enum attribute-flags-error {
                    value "4";
                  }
                  enum attribute-length-error {
                    value "5";
                  }
                  enum invalid-origin-attribute {



Wang, et al.             Expires April 26, 2015                [Page 82]

Internet-Draft                   BGP IM                     October 2014


                    value "6";
                  }
                  enum deprecated-see-appendix {
                    value "7";
                  }
                  enum invalid-next-hop-attribute {
                    value "8";
                  }
                  enum optional-attribute-error {
                    value "9";
                  }
                  enum invalid-network-field {
                    value "10";
                  }
                  enum malformed-as-path {
                    value "11";
                  }
                }
              }
            }
            case route-refresh-error-sub-code{
              leaf route-refresh-error-sub-value {
                type enumeration {
                  enum invalid-message-length {
                    value "1";
                  }
                }
              }
            }
          }
        }
        config false;
      }

      leaf peer-received-update-cnt {
        description
          "the count of the received update packets..";
        type uint64;
        config false;
      }
      leaf peer-transmit-update-cnt {
        description
          "the count of the transmit update packets.";
        type uint64;
        config false;
      }
      leaf peer-received-route-cnt {
        description



Wang, et al.             Expires April 26, 2015                [Page 83]

Internet-Draft                   BGP IM                     October 2014


          "contains current total number of unique prefix routes received from peer.";
        type uint64;
        config false;
      }
      leaf peer-send-route-cnt {
        description
          "contains current total number prefix routes sent to peer.";
        type uint64;
        config false;
      }

      leaf max-prefix-rcv-limit {
        description
          "maximum unique prefix routes accepted from peer.";
        type uint64;
      }
      leaf max-prefix-xmt-limit {
        description
          "maximum unique prefix routes transmit to peer.";
        type uint64;
      }

      leaf peer-prefix-high {
        description
          "contains high water mark count of total unique routes by prefix received from peer.";
        type uint64;
        config false;
      }
      leaf peer-prefix-low {
        description
          "contains the low water mark count of total unique routes by prefix received from peer.";
        type uint64;
        config false;
      }
      leaf peer-perfix-ave {
         description
          "contains the average number of prefix routes from peer (running).";
        type uint64;
        config false;
      }
      leaf peer-prefix-time {
        type uint64;
        config false;
      }
      leaf peer-prefix-max {
        type uint64;
        config false;
      }



Wang, et al.             Expires April 26, 2015                [Page 84]

Internet-Draft                   BGP IM                     October 2014


      leaf publish-version {
        type uint64;
        config false;
      }
    }
  }//end of "container bgp-peer-list"


  grouping bgp-mvpn-rib {
    uses bgp-route-common;

    choice bgp-mvpn-route-type {
      case INTRA_AS_I_PMSI_AD {
        list intra-as-i-pmsi-ad-route{
          key "route-type route-distinguisher origin-router-ip-addr";

          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case INTER_AS_I_PMSI_AD {
        list inter_as_i_pmsi_as_route {
          key "route-type route-distinguisher source-as";

          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf source-as{
            type inet:as-number;
          }
        }
      }
      case S_PMSI_AD {
        list s-pmsi-ad-route {
          key "route-type route-distinguisher multicast-source
           multicast-group origin-router-ip-addr";

          leaf route-type{



Wang, et al.             Expires April 26, 2015                [Page 85]

Internet-Draft                   BGP IM                     October 2014


            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case LEAF_AD{
        list leaf-ad-route {
          key "route-type route-key origin-router-ip-addr";

          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-key{
            type binary;
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case SOURCE_ACTIVE_AD {
        list source-active-ad-route {
          key "route-type route-distinguisher
            multicast-source multicast-group";

          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }



Wang, et al.             Expires April 26, 2015                [Page 86]

Internet-Draft                   BGP IM                     October 2014


        }
      }
      case SHARED_TREE_JOIN {
        list shared-tree-join-route {
          key "route-type route-distinguisher source-as
            multicast-source multicast-group";

          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf source-as{
            type inet:as-number;
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
        }
      }
      case SOURCE_TREE_JOIN {
        list source-tree-join-route {
          key "route-type route-distinguisher source-as
            multicast-source multicast-group";

          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf source-as{
            type inet:as-number;
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
        }
      }

    }



Wang, et al.             Expires April 26, 2015                [Page 87]

Internet-Draft                   BGP IM                     October 2014


  }

  grouping bgp-mcast-vpls-rib {
    uses bgp-route-common;

    choice bgp-mcast-vpls-route-type {
      case SELECTIVE_TREE_AD_ROUTE {
        list selective-tree-ad-route{
          key "route-type route-distinguisher multicast-source
           multicast-group origin-router-ip-addr";

          leaf route-type{
            type mcast-vpls-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case LEAF_AD {
        list leaf-ad-route {
          key "route-type route-key origin-router-ip-addr";

          leaf route-type{
            type mcast-vpls-route-type;
          }
          leaf route-key{
            type binary;
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }

    }
  }

  grouping bgp-evpn-rib {



Wang, et al.             Expires April 26, 2015                [Page 88]

Internet-Draft                   BGP IM                     October 2014


    uses bgp-route-common;

    choice bgp-evpn-route-type {
      case EVPN_AD_ROUTE {
        list evpn-ad-route{
          key "route-type route-distinguisher esi eth-tag-id";

          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf esi{
            type string{
              length "24";
              pattern "(^00([0-9a-fA-F]){2}\.(([0-9a-fA-F]){4}\.){3}
              (([0-9a-fA-F]){4})$)";
            }
          }
          leaf eth-tag-id {
            type uint32 {
              range "1..4294967295";
            }
          }
        }
      }
      case EVPN_MAC_ROUTE {
        list evpn-mac-route {
          key "route-type route-distinguisher esi eth-tag-id
          mac-length mac-address ip-address-length ip-address";

          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf esi{
            type string{
              length "24";
              pattern "(^00([0-9a-fA-F]){2}\.(([0-9a-fA-F]){4}\.){3}
              (([0-9a-fA-F]){4})$)";
            }
          }
          leaf eth-tag-id {
            type uint32 {
              range "1..4294967295";



Wang, et al.             Expires April 26, 2015                [Page 89]

Internet-Draft                   BGP IM                     October 2014


            }
          }
          leaf mac-length {
            type uint8 {
              range "48";
            }
          }
          leaf mac-address {
            type yang:mac-address;
          }
          leaf ip-address-length {
            type uint8 {
              range "0..32";
            }
          }
          leaf ip-address {
            type inet:ip-address;
          }
          leaf label1{
            type uint32 {
                range "16..1048574";
            }
          }
          leaf label2{
            type uint32 {
                range "16..1048574";
            }
          }
        }
      }
      case EVPN_INC_MCAST_TREE {
        list evpn-inc-mcast-tree-route {
          key "route-type route-distinguisher eth-tag-id
           ip-address-length origin-router-ip-addr";

          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf eth-tag-id {
            type uint32 {
              range "1..4294967295";
            }
          }
          leaf ip-address-length {
            type uint8; //4 or 16 octets



Wang, et al.             Expires April 26, 2015                [Page 90]

Internet-Draft                   BGP IM                     October 2014


          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case EVPN_ETH_SEGMENT_ROUTE{
        list evpn-eth-segment-route {
          key "route-type route-distinguisher esi
          ip-address-length origin-router-ip-addr";

          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          leaf esi{
            type string{
              length "24";
              pattern "(^00([0-9a-fA-F]){2}\.(([0-9a-fA-F]){4}\.){3}
              (([0-9a-fA-F]){4})$)";
            }
          }
          leaf ip-address-length {
            type uint8; //4 or 16 octets
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
    }
  }

  container bgp-protocol {
    leaf router-id {
      type inet:ip-address;
    }
    leaf as-number {
      type uint32;
    }

    leaf protocol-status {
      description
        "administartive status of bgp protocol.";
      type enumeration {
         enum "unknown";



Wang, et al.             Expires April 26, 2015                [Page 91]

Internet-Draft                   BGP IM                     October 2014


         enum "up";
         enum "down";
      }
      config false;
    }

    leaf shutdown-protocol {
      type boolean;
    }

    leaf bgp-role {
      type enumeration {
         enum "asbr";
         enum "pe";
         enum "ibgp";
         enum "rr";
      }
      config false;
    }

    container bgp-ipv4-uni-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length";



Wang, et al.             Expires April 26, 2015                [Page 92]

Internet-Draft                   BGP IM                     October 2014


            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }
    container bgp-labeled-ipv4-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length mpls-label";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;



Wang, et al.             Expires April 26, 2015                [Page 93]

Internet-Draft                   BGP IM                     October 2014


          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length mpls-label";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length mpls-label";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }


    container bgp-ipv4-multi-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }



Wang, et al.             Expires April 26, 2015                [Page 94]

Internet-Draft                   BGP IM                     October 2014


          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }

    container bgp-vpnv4-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length route-distinguisher";
          leaf ipv4-route{
            type inet:ipv4-prefix;



Wang, et al.             Expires April 26, 2015                [Page 95]

Internet-Draft                   BGP IM                     October 2014


          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length route-distinguisher";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length route-distinguisher";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }



Wang, et al.             Expires April 26, 2015                [Page 96]

Internet-Draft                   BGP IM                     October 2014


            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }




    list bgp-ipv4-l3vpn-instance-list {
      key "bgp-l3vpn-instance-name";
      leaf bgp-l3vpn-instance-name {
        type string;
      }
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{



Wang, et al.             Expires April 26, 2015                [Page 97]

Internet-Draft                   BGP IM                     October 2014


          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }

    /*ipv6*/
    container bgp-ipv6-uni-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{



Wang, et al.             Expires April 26, 2015                [Page 98]

Internet-Draft                   BGP IM                     October 2014


            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
           }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }
    container bgp-labeled-ipv6-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length mpls-label";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{



Wang, et al.             Expires April 26, 2015                [Page 99]

Internet-Draft                   BGP IM                     October 2014


        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length mpls-label";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length mpls-label";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }


    container bgp-ipv6-multi-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{



Wang, et al.             Expires April 26, 2015               [Page 100]

Internet-Draft                   BGP IM                     October 2014


          key "ipv6-route ipv6-prefix-length";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }




Wang, et al.             Expires April 26, 2015               [Page 101]

Internet-Draft                   BGP IM                     October 2014


    container bgp-vpnv6-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length route-distinguisher";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length route-distinguisher";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }



Wang, et al.             Expires April 26, 2015               [Page 102]

Internet-Draft                   BGP IM                     October 2014


        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length route-distinguisher";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }



    list bgp-ipv6-l3vpn-instance-list {
      key "bgp-l3vpn-instance-name";
      leaf bgp-l3vpn-instance-name {
        type string;
      }
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }



Wang, et al.             Expires April 26, 2015               [Page 103]

Internet-Draft                   BGP IM                     October 2014


          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }

    container bgp-ipv4-mvpn-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-mvpn-rib;
      }

      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }



Wang, et al.             Expires April 26, 2015               [Page 104]

Internet-Draft                   BGP IM                     October 2014


        }
        uses bgp-peer-common;

        container bgp-rib-in{
            uses bgp-mvpn-rib;
        }
        container bgp-rib-out{
            uses bgp-mvpn-rib;
        }
      }
    }

    container bgp-ipv6-mvpn-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-mvpn-rib;
      }

      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;

        container bgp-rib-in{
            uses bgp-mvpn-rib;
        }
        container bgp-rib-out{
            uses bgp-mvpn-rib;
        }
      }
    }

    container bgp-mcast-vpls-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-mcast-vpls-rib;
      }

      list bgp-peer-list{



Wang, et al.             Expires April 26, 2015               [Page 105]

Internet-Draft                   BGP IM                     October 2014


        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;

        container bgp-rib-in{
            uses bgp-mcast-vpls-rib;
        }
        container bgp-rib-out{
            uses bgp-mcast-vpls-rib;
        }
      }
    }

    container bgp-evpn-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-evpn-rib;
      }

      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;

        container bgp-rib-in{
            uses bgp-evpn-rib;
        }
        container bgp-rib-out{
            uses bgp-evpn-rib;
        }
      }
    }




Wang, et al.             Expires April 26, 2015               [Page 106]

Internet-Draft                   BGP IM                     October 2014


  }//end of "container bgp-protocol"

}
//<code ends>


5.  IANA Considerations

   This draft includes no request to IANA.

6.  Security Considerations

   TBD.

7.  Informative References

   [I-D.hares-i2rs-bnp-info-model]
              Hares, S. and Q. Wu, "An Information Model for Basic
              Network Policy", draft-hares-i2rs-bnp-info-model-00 (work
              in progress), September 2014.

   [I-D.ietf-i2rs-architecture]
              Atlas, A., Halpern, J., Hares, S., Ward, D., and T.
              Nadeau, "An Architecture for the Interface to the Routing
              System", draft-ietf-i2rs-architecture-05 (work in
              progress), July 2014.

   [I-D.ietf-i2rs-rib-info-model]
              Bahadur, N., Folkes, R., Kini, S., and J. Medved, "Routing
              Information Base Info Model", draft-ietf-i2rs-rib-info-
              model-03 (work in progress), May 2014.

   [I-D.ietf-netconf-restconf]
              Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
              Protocol", draft-ietf-netconf-restconf-02 (work in
              progress), October 2014.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3060]  Moore, B., Ellesson, E., Strassner, J., and A. Westerinen,
              "Policy Core Information Model -- Version 1
              Specification", RFC 3060, February 2001.

   [RFC3460]  Moore, B., "Policy Core Information Model (PCIM)
              Extensions", RFC 3460, January 2003.





Wang, et al.             Expires April 26, 2015               [Page 107]

Internet-Draft                   BGP IM                     October 2014


   [RFC3644]  Snir, Y., Ramberg, Y., Strassner, J., Cohen, R., and B.
              Moore, "Policy Quality of Service (QoS) Information
              Model", RFC 3644, November 2003.

   [RFC5394]  Bryskin, I., Papadimitriou, D., Berger, L., and J. Ash,
              "Policy-Enabled Path Computation Framework", RFC 5394,
              December 2008.

   [RFC5511]  Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax
              Used to Form Encoding Rules in Various Routing Protocol
              Specifications", RFC 5511, April 2009.

   [RFC6536]  Bierman, A. and M. Bjorklund, "Network Configuration
              Protocol (NETCONF) Access Control Model", RFC 6536, March
              2012.

Authors' Addresses

   Lixing Wang
   Huawei
   Beijing
   PRC

   Email: wanglixing@huawei.com


   Susan Hares
   Huawei
   7453 Hickory Hill
   Saline, MI  48176
   USA

   Email: shares@ndzh.com


   Shunwan Zhuang
   Huawei
   Beijing
   PRC

   Email: Zhuangshunwan@huawei.com










Wang, et al.             Expires April 26, 2015               [Page 108]