[Docs] [txt|pdf|xml|html] [Tracker] [Email] [Nits]

Versions: 00

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


                        An I2RS BGP Data Modell
                     draft-hares-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 18, 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 18, 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  . . . . . . . . . . . . . . . . . . . .  60
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  98
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  98
   7.  Informative References  . . . . . . . . . . . . . . . . . . .  98
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  99

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 18, 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 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



Wang, et al.             Expires April 18, 2015                 [Page 3]


Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  +--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
      |     |  +--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 18, 2015                 [Page 4]


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-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 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 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-rib-out
      |        +--rw bgp-rib-out-list* [ipv4-route ipv4-prefix-length]
      |           +--rw ipv4-route            inet:ipv4-prefix



Wang, et al.             Expires April 18, 2015                 [Page 5]


Internet-Draft                   BGP IM                     October 2014


      |           +--rw ipv4-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
      |           +--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 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-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



Wang, et al.             Expires April 18, 2015                 [Page 6]


Internet-Draft                   BGP IM                     October 2014


      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw mpls-label            mpls-label-def
      |  |     +--rw bgp-route-type?       enumeration
      |  |     +--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 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



Wang, et al.             Expires April 18, 2015                 [Page 7]


Internet-Draft                   BGP IM                     October 2014


      |     +--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-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 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



Wang, et al.             Expires April 18, 2015                 [Page 8]


Internet-Draft                   BGP IM                     October 2014


      |     |     |  +--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 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-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 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 18, 2015                 [Page 9]


Internet-Draft                   BGP IM                     October 2014


      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
      |           |  |  +--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-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 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 18, 2015                [Page 10]


Internet-Draft                   BGP IM                     October 2014


      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
      |  |     |  |  +--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
      |     |  +--rw max-prefix-rcv-limit?       uint64



Wang, et al.             Expires April 18, 2015                [Page 11]


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]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
      |     |     +--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 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 18, 2015                [Page 12]


Internet-Draft                   BGP IM                     October 2014


      |     +--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 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 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-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



Wang, et al.             Expires April 18, 2015                [Page 13]


Internet-Draft                   BGP IM                     October 2014


      |  +--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 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 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



Wang, et al.             Expires April 18, 2015                [Page 14]


Internet-Draft                   BGP IM                     October 2014


      |     +--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-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 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



Wang, et al.             Expires April 18, 2015                [Page 15]


Internet-Draft                   BGP IM                     October 2014


      |     |     |  |  +--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 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-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 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



Wang, et al.             Expires April 18, 2015                [Page 16]


Internet-Draft                   BGP IM                     October 2014


      |           |  +--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 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-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 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



Wang, et al.             Expires April 18, 2015                [Page 17]


Internet-Draft                   BGP IM                     October 2014


      |  |     |  +--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 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



Wang, et al.             Expires April 18, 2015                [Page 18]


Internet-Draft                   BGP IM                     October 2014


      |     |  |        +--:(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-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 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 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 18, 2015                [Page 19]


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 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 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 18, 2015                [Page 20]


Internet-Draft                   BGP IM                     October 2014


      +--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 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 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 18, 2015                [Page 21]


Internet-Draft                   BGP IM                     October 2014


      |  +--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
      |     |  +--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 bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16



Wang, et al.             Expires April 18, 2015                [Page 22]


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 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-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 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



Wang, et al.             Expires April 18, 2015                [Page 23]


Internet-Draft                   BGP IM                     October 2014


      |           |  +--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 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-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 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



Wang, et al.             Expires April 18, 2015                [Page 24]


Internet-Draft                   BGP IM                     October 2014


      |  |     |  +--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 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)



Wang, et al.             Expires April 18, 2015                [Page 25]


Internet-Draft                   BGP IM                     October 2014


      |     |  |        |  +--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-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 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 usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16



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


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* [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 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 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



Wang, et al.             Expires April 18, 2015                [Page 27]


Internet-Draft                   BGP IM                     October 2014


      |              +--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 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 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



Wang, et al.             Expires April 18, 2015                [Page 28]


Internet-Draft                   BGP IM                     October 2014


      |  |        +--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
      |     |  +--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 bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration



Wang, et al.             Expires April 18, 2015                [Page 29]


Internet-Draft                   BGP IM                     October 2014


      |     |     |  +--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 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-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 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



Wang, et al.             Expires April 18, 2015                [Page 30]


Internet-Draft                   BGP IM                     October 2014


      |           |  |  +--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 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-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 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 18, 2015                [Page 31]


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 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)



Wang, et al.             Expires April 18, 2015                [Page 32]


Internet-Draft                   BGP IM                     October 2014


      |     |  |        |  +--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-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 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



Wang, et al.             Expires April 18, 2015                [Page 33]


Internet-Draft                   BGP IM                     October 2014


      |     |     |  |  +--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-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 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 usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16



Wang, et al.             Expires April 18, 2015                [Page 34]


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-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 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 usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist



Wang, et al.             Expires April 18, 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
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64



Wang, et al.             Expires April 18, 2015                [Page 36]


Internet-Draft                   BGP IM                     October 2014


      |     +--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 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 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-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 bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration



Wang, et al.             Expires April 18, 2015                [Page 37]


Internet-Draft                   BGP IM                     October 2014


      |           |  +--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 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-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 bgp-attribute-list
      |  |  |  +--rw bgp-origin?             enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16



Wang, et al.             Expires April 18, 2015                [Page 38]


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 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-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



Wang, et al.             Expires April 18, 2015                [Page 39]


Internet-Draft                   BGP IM                     October 2014


      |  |     |     +--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]
      |  |           +--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



Wang, et al.             Expires April 18, 2015                [Page 40]


Internet-Draft                   BGP IM                     October 2014


      |     |  |        +--:(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 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 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 18, 2015                [Page 41]


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-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]
      |     |           +--rw route-type             mvpn-route-type
      |     |           +--rw route-distinguisher    route-distinguisher-def
      |     |           +--rw source-as              inet:as-number
      |     |           +--rw multicast-source       inet:ip-prefix



Wang, et al.             Expires April 18, 2015                [Page 42]


Internet-Draft                   BGP IM                     October 2014


      |     |           +--rw multicast-group        inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?             enumeration
      |        +--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 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-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



Wang, et al.             Expires April 18, 2015                [Page 43]


Internet-Draft                   BGP IM                     October 2014


      |           |     +--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]
      |                 +--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 bgp-attribute-list
      |  |  |  +--rw bgp-origin?             enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16



Wang, et al.             Expires April 18, 2015                [Page 44]


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 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-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



Wang, et al.             Expires April 18, 2015                [Page 45]


Internet-Draft                   BGP IM                     October 2014


      |  |     |     +--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]
      |  |           +--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



Wang, et al.             Expires April 18, 2015                [Page 46]


Internet-Draft                   BGP IM                     October 2014


      |     |  |        +--:(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 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 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 18, 2015                [Page 47]


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-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]
      |     |           +--rw route-type             mvpn-route-type
      |     |           +--rw route-distinguisher    route-distinguisher-def
      |     |           +--rw source-as              inet:as-number
      |     |           +--rw multicast-source       inet:ip-prefix



Wang, et al.             Expires April 18, 2015                [Page 48]


Internet-Draft                   BGP IM                     October 2014


      |     |           +--rw multicast-group        inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?             enumeration
      |        +--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 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-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



Wang, et al.             Expires April 18, 2015                [Page 49]


Internet-Draft                   BGP IM                     October 2014


      |           |     +--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]
      |                 +--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 bgp-attribute-list
      |  |  |  +--rw bgp-origin?             enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16



Wang, et al.             Expires April 18, 2015                [Page 50]


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 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



Wang, et al.             Expires April 18, 2015                [Page 51]


Internet-Draft                   BGP IM                     October 2014


      |     +--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 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



Wang, et al.             Expires April 18, 2015                [Page 52]


Internet-Draft                   BGP IM                     October 2014


      |     |  |  +--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 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 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



Wang, et al.             Expires April 18, 2015                [Page 53]


Internet-Draft                   BGP IM                     October 2014


      |        |  |  +--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 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-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



Wang, et al.             Expires April 18, 2015                [Page 54]


Internet-Draft                   BGP IM                     October 2014


         |  +--rw bgp-route-type?              enumeration
         |  +--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 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 18, 2015                [Page 55]


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-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]
            +--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



Wang, et al.             Expires April 18, 2015                [Page 56]


Internet-Draft                   BGP IM                     October 2014


            |  +--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 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 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 18, 2015                [Page 57]


Internet-Draft                   BGP IM                     October 2014


            |  |  +--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-rib-out
               +--rw bgp-route-type?              enumeration
               +--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



Wang, et al.             Expires April 18, 2015                [Page 58]


Internet-Draft                   BGP IM                     October 2014


               |  +--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 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]
                  |     +--rw route-type               evpn-route-type
                  |     +--rw route-distinguisher      route-distinguisher-def



Wang, et al.             Expires April 18, 2015                [Page 59]


Internet-Draft                   BGP IM                     October 2014


                  |     +--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):

        ip (ip): internet protocol

        ipv4 (ipv4):internet protocol version 4




Wang, et al.             Expires April 18, 2015                [Page 60]


Internet-Draft                   BGP IM                     October 2014


        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";
    }
  }

  typedef mvpn-route-type {
    reference "http://tools.ietf.org/html/rfc6514#section-4";
      type enumeration {
        enum INTRA_AS_I_PMSI_AD {



Wang, et al.             Expires April 18, 2015                [Page 61]


Internet-Draft                   BGP IM                     October 2014


          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;
        }
        enum EVPN_INC_MCAST_TREE {
          value 3;
        }
        enum EVPN_ETH_SEGMENT_ROUTE {



Wang, et al.             Expires April 18, 2015                [Page 62]


Internet-Draft                   BGP IM                     October 2014


          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";
    }
  }

  typedef rib-state-def {



Wang, et al.             Expires April 18, 2015                [Page 63]


Internet-Draft                   BGP IM                     October 2014


    type enumeration {
      enum "active";
      enum "in-active";
      enum "primary";
      enum "backup";
      enum "suppress";
    }
  }

    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";
      enum "i2rsagent-bgp-instance-create";
      enum "i2rsagent-rejects-bgp-instance-create";
      enum "i2rsagent-attempts-bgp-instance-create";
    }
    }




Wang, et al.             Expires April 18, 2015                [Page 64]


Internet-Draft                   BGP IM                     October 2014


    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 {
    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";



Wang, et al.             Expires April 18, 2015                [Page 65]


Internet-Draft                   BGP IM                     October 2014


      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";
      }
    }

    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;
        }



Wang, et al.             Expires April 18, 2015                [Page 66]


Internet-Draft                   BGP IM                     October 2014


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

        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 uscommsize {
          description



Wang, et al.             Expires April 18, 2015                [Page 67]


Internet-Draft                   BGP IM                     October 2014


            "number of communities.";

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

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

          type string;
        }
      }

      container bgp-extcommattr {
        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



Wang, et al.             Expires April 18, 2015                [Page 68]


Internet-Draft                   BGP IM                     October 2014


            "count of number of routes referring to this
             cluster list.";

          type uint32;
        }
        leaf clusterlist-value {
          description
            "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;
      }



Wang, et al.             Expires April 18, 2015                [Page 69]


Internet-Draft                   BGP IM                     October 2014


      leaf rib-rejected-reason {
        description
          "the way of creating of bgp route.";
        type enumeration {
          enum "peer-withdraw";
          enum "policy-results";
          enum "nexthop-unreachable";
          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";
        }
        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,



Wang, et al.             Expires April 18, 2015                [Page 70]


Internet-Draft                   BGP IM                     October 2014


        or rr (route reflector).";
     type enumeration {
       enum "asbr";
       enum "ibgp";
       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;



Wang, et al.             Expires April 18, 2015                [Page 71]


Internet-Draft                   BGP IM                     October 2014


    }
    container peer-state-info {
      description "the  current state of the bgp peer in the bgp state machine.";
      leaf peer-current-state {
        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";
                  }



Wang, et al.             Expires April 18, 2015                [Page 72]


Internet-Draft                   BGP IM                     October 2014


                  enum bad-message-length {
                    value "2";
                  }
                  enum bad-message-type {
                    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";
                  }



Wang, et al.             Expires April 18, 2015                [Page 73]


Internet-Draft                   BGP IM                     October 2014


                  enum attribute-length-error {
                    value "5";
                  }
                  enum invalid-origin-attribute {
                    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;



Wang, et al.             Expires April 18, 2015                [Page 74]


Internet-Draft                   BGP IM                     October 2014


        config false;
      }
      leaf peer-received-route-cnt {
        description
          "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;
      }



Wang, et al.             Expires April 18, 2015                [Page 75]


Internet-Draft                   BGP IM                     October 2014


      leaf peer-prefix-max {
        type uint64;
        config false;
      }
      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 {



Wang, et al.             Expires April 18, 2015                [Page 76]


Internet-Draft                   BGP IM                     October 2014


          key "route-type route-distinguisher multicast-source
           multicast-group origin-router-ip-addr";

          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;
          }
          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;



Wang, et al.             Expires April 18, 2015                [Page 77]


Internet-Draft                   BGP IM                     October 2014


          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
        }
      }
      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 18, 2015                [Page 78]


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;
          }
        }
      }




Wang, et al.             Expires April 18, 2015                [Page 79]


Internet-Draft                   BGP IM                     October 2014


    }
  }

  grouping bgp-evpn-rib {
    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})$)";
            }



Wang, et al.             Expires April 18, 2015                [Page 80]


Internet-Draft                   BGP IM                     October 2014


          }
          leaf eth-tag-id {
            type uint32 {
              range "1..4294967295";
            }
          }
          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";



Wang, et al.             Expires April 18, 2015                [Page 81]


Internet-Draft                   BGP IM                     October 2014


            }
          }
          leaf ip-address-length {
            type uint8; //4 or 16 octets
          }
          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 {



Wang, et al.             Expires April 18, 2015                [Page 82]


Internet-Draft                   BGP IM                     October 2014


      description
        "administartive status of bgp protocol.";
      type enumeration {
         enum "unknown";
         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;
          }
        }



Wang, et al.             Expires April 18, 2015                [Page 83]


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";
            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{



Wang, et al.             Expires April 18, 2015                [Page 84]


Internet-Draft                   BGP IM                     October 2014


            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 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;



Wang, et al.             Expires April 18, 2015                [Page 85]


Internet-Draft                   BGP IM                     October 2014


          }
          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";
            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{



Wang, et al.             Expires April 18, 2015                [Page 86]


Internet-Draft                   BGP IM                     October 2014


        list bgp-route-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;
        }
      }
      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{



Wang, et al.             Expires April 18, 2015                [Page 87]


Internet-Draft                   BGP IM                     October 2014


            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;
          }
        }
      }
    }




    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;



Wang, et al.             Expires April 18, 2015                [Page 88]


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";
            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{



Wang, et al.             Expires April 18, 2015                [Page 89]


Internet-Draft                   BGP IM                     October 2014


          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;
          }
        }
      }
    }
    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;
          }



Wang, et al.             Expires April 18, 2015                [Page 90]


Internet-Draft                   BGP IM                     October 2014


          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 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;
          }
        }
      }
    }





Wang, et al.             Expires April 18, 2015                [Page 91]


Internet-Draft                   BGP IM                     October 2014


    container bgp-ipv6-multi-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{
            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 18, 2015                [Page 92]


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{



Wang, et al.             Expires April 18, 2015                [Page 93]


Internet-Draft                   BGP IM                     October 2014


              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
        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";



Wang, et al.             Expires April 18, 2015                [Page 94]


Internet-Draft                   BGP IM                     October 2014


        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;
          }
        }
      }
    }

    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;



Wang, et al.             Expires April 18, 2015                [Page 95]


Internet-Draft                   BGP IM                     October 2014


          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        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{



Wang, et al.             Expires April 18, 2015                [Page 96]


Internet-Draft                   BGP IM                     October 2014


        uses bgp-mcast-vpls-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-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 18, 2015                [Page 97]


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.



Wang, et al.             Expires April 18, 2015                [Page 98]


Internet-Draft                   BGP IM                     October 2014


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

   [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 18, 2015                [Page 99]


Html markup produced by rfcmarkup 1.129b, available from https://tools.ietf.org/tools/rfcmarkup/