<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="std"
  docName="draft-netana-nmop-message-broker-bmp-telemetry-msg-02"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">

  <front>
    <title abbrev="BMP YANG Network Telemetry Message">BMP YANG Model
      for Network Telemetry Messages</title>

    <seriesInfo name="Internet-Draft"
      value="draft-netana-nmop-message-broker-bmp-telemetry-msg-02" />

    <author fullname="Thomas Graf" initials="TG" surname="Graf">

      <organization>Swisscom</organization>
      <address>
        <postal>
          <street>Binzring 17</street>
          <city>Zurich</city>
          <code>8045</code>
          <country>CH</country>
        </postal>
        <email>thomas.graf@swisscom.com</email>
      </address>
    </author>

    <author fullname="Paolo Lucente" initials="PL" surname="Lucente">

      <organization>NTT</organization>
      <address>
        <postal>
          <street>Veemweg 23</street>
          <city>Barneveld</city>
          <code>3771</code>
          <country>NL</country>
        </postal>
        <email>paolo@ntt.net</email>
      </address>
    </author>

    <author fullname="Leonardo Rodoni" initials="LR" surname="Rodoni">

      <organization>Swisscom</organization>
      <address>
        <postal>
          <street>Binzring 17</street>
          <city>Zurich</city>
          <code>8045</code>
          <country>CH</country>
        </postal>
        <email>leonardo.rodoni@swisscom.com</email>
      </address>
    </author>

    <author fullname="Maxence Younsi" initials="MY" surname="Younsi">

    <organization>INSA-Lyon</organization>
      <address>
        <postal>
          <city>Lyon</city>
          <country>FR</country>
        </postal>        
        <email>maxence.younsi@insa-lyon.fr</email>
      </address>
    </author>


    <date day="13" month="February" year="2026" />

    <area>General</area>
    <workgroup>NMOP</workgroup>
    <keyword>BMP</keyword>
    <keyword>BGP</keyword>
    <keyword>Data Mesh</keyword>
    <keyword>Network Telemetry</keyword>
    <keyword>Network Analytics</keyword>

    <abstract>
      <t>This document defines an BGP Monitoring Protocol (BMP) message
        schema extension in YANG to be used at data collection to
        transform Network Telemetry messages into external systems such
        as Message Brokers.</t>
    </abstract>

  </front>

  <middle>

    <section anchor="Introduction">
      <name>Introduction</name>

      <t>Nowadays network operators are using <xref
          target="RFC7854">BGP Monitoring Protocol (BMP)</xref> to
        monitor the BGP peerings and RIB's. With <xref
          target="I-D.ietf-nmop-message-broker-telemetry-message" /> a
        machine and human readable extensible Network Telemetry message
        schema in <xref target="RFC7950">YANG</xref> has been defined.</t>

      <t>Network operators organize their data in a <xref
          target="Deh22">Data Mesh</xref> where a Message Broker such as <xref
          target="Kaf11">Apache Kafka</xref> or <xref
          target="Pul16">Apache Pulsar</xref> facilitates the exchange
        of messages among data processing components.</t>

      <t>With <xref
          target="I-D.netana-nmop-yang-message-broker-message-key">YANG
        Message Keys for Message Broker Integration</xref> how
        Dimensional YANG data can be indexed and addressed in Message
        Brokers are being described.</t>

      <t>This document describes how <xref
          target="I-D.ietf-nmop-message-broker-telemetry-message" />
        defined Network Telemetry message is being extended to support
        BMP data transformation to YANG at the Network Telemetry data
        collector and being indexed and addressed in Message Broker
        based on <xref
          target="I-D.netana-nmop-yang-message-broker-message-key" />
        principles at the YANG Message Broker Producer.</t>
    </section>

    <section anchor="Conventions_and_Definitions">
      <name>Conventions and Definitions</name>

      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
        NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
        "MAY", and "OPTIONAL" in this document are to be interpreted as
        described in BCP 14 <xref target="RFC2119" />
      <xref
          target="RFC8174" /> when, and only when, they appear in all
        capitals, as shown here.</t>

      <section anchor="Terminology">
        <name>Terminology</name>

        <t>The following terms are used as defined in <xref
            target="I-D.ietf-nmop-terminology" />:</t>

        <ul>
          <li>Network Telemetry</li>

          <li>Network Analytics</li>

          <li>Value</li>

          <li>State</li>

          <li>Change</li>
        </ul>

        <t>The following terms are used as defined in <xref
            target="I-D.ietf-nmop-yang-message-broker-integration" />:</t>

        <ul>
          <li>Message Broker</li>

          <li>YANG Message Broker Producer</li>

          <li>YANG Message Broker Consumer</li>
        </ul>

        <t>The following terms are used as defined in <xref
            target="Kaf11">Apache Kafka</xref> and <xref
            target="Pul16">Apache Pulsar</xref> Message Broker:</t>

        <ul>
          <li>Subject: Is used for Messages within a Topic sharing the
            same schema tree and also to identify a unique schema tree
            within a schema registry.</li>

          <li>Topic: A communication channel for publishing and
            subscribing messages with one or more subjects and
            partitions.</li>

          <li>Topic Compaction: The act of compressing messages in a
            topic to the latest state. As used with Apache Pulsar.
            Apache Kafka uses the term Log Compaction with identical
            meaning. </li>

          <li>Partition: Messages in a topic are spread over hash
            buckets where a hash bucket refers to a partition being
            stored on one message broker node. Message ordering is
            guaranteed within a partition.</li>

          <li>Message: A piece of structured data sent between data
            processing components to facilitate communication in a
            distributed system</li>

          <li>Message Key: Metadata associated with a message to
            facilitate deterministic hash bucketing.</li>
        </ul>

        <t>The following terms are used as defined in <xref
            target="RFC7854" />:</t>

        <ul>
          <li>BMP</li>

          <li>BMP Message</li>

          <li>Adj-RIB-In</li>

          <li>Pre-policy Adj-RIB-In</li>

          <li>Post-Policy Adj-RIB-In</li>
        </ul>

        <t>The following terms are used as defined in <xref
            target="RFC8671" />:</t>

        <ul>
          <li>Adj-RIB-Out</li>

          <li>Pre-policy Adj-RIB-Out</li>

          <li>Post-policy Adj-RIB-Out</li>
        </ul>

        <t>The following terms are used as defined in <xref
            target="RFC9069" />:</t>

        <ul>
          <li>BGP Instance</li>

          <li>Loc-RIB</li>
        </ul>

        <t>This document defines the following term:</t>

        <ul>
          <li>BMP Index: A unique identifier created depending on BMP
            Message Type from multiple BMP and BGP data dimensions. The
            BMP Index is used to generate the Message Key. See <xref
              target="BMP_Message_Keys_Indexes_Solution" />.</li>
        </ul>
      </section>
    </section>

    <section>
      <name>Relationship to other documents</name>

      <section>
        <name>Relationship to
        draft-ietf-nmop-message-broker-telemetry-message</name>

        <t><xref
            target="I-D.ietf-nmop-message-broker-telemetry-message" />
          defines with 'ietf-telemetry-message' YANG module a base
          Network Telemetry Message schema being used between <xref
            section="4.6" sectionFormat="of"
            target="I-D.ietf-nmop-yang-message-broker-integration">
          Message Broker Producer</xref> and <xref section="4.7"
            sectionFormat="of"
            target="I-D.ietf-nmop-yang-message-broker-integration">
          Message Broker Consumer</xref> and with
          'ietf-yang-push-telemetry-message' YANG module an extension
          that supports YANG-Push specific subscription metadata.</t>

        <t>This document defines one BMP YANG module <xref
            target="ietf-bmp-telemetry-message-module" />, and 3 BGP RIB
          submodules <xref target="ietf-bmp-bgp-sub-modules" /> which
          are being used in the anydata "payload" <xref
            target="I-D.ietf-nmop-message-broker-telemetry-message" />
          defined in 'ietf-telemetry-message' YANG module.</t>
      </section>

      <section>
        <name>Relationship to draft-ietf-idr-bgp-model</name>

        <t><xref target="I-D.ietf-idr-bgp-model" /> defines with
          'ietf-bgp' a YANG module and with 'iana-bgp-community-types',
          'iana-bgp-notification', 'iana-bgp-rib-types',
          'iana-bgp-types', 'ietf-bgp-capabilities', 'ietf-bgp-common',
          'ietf-bgp-common-multiprotocol', 'ietf-bgp-common-structure',
          'ietf-bgp-neighbor', 'ietf-bgp-policy', 'ietf-bgp-rib',
          'ietf-bgp-rib-attributes' and 'ietf-bgp-rib-tables'
          submodules.</t>

        <t>This document is using the content of the 'rib' YANG grouping
          defined in 'ietf-bgp-rib' submodule and renames the YANG
          grouping to 'rib-entry' and restructures the data taxonomy to
          allow a single BGP RIB entry to be serialized in a Telemetry
          Message on Message Broker in the 'ietf-bmp-bgp-rib-entry'
          submodule. The 'clear-routes' YANG grouping used in the 'rib'
          YANG grouping has been removed since a Telemetry Message only
          covers operational metrics.</t>

        <t>Since 'ietf-bgp-rib' uses groupings from
          'ietf-bgp-rib-attributes' and 'ietf-bgp-rib-tables' and both
          'ietf-bgp-rib-attributes' and 'ietf-bgp-rib-tables'YANG
          submodules <xref section="7.2.2" sectionFormat="of"
            target="RFC7950">belongs to</xref> 'ietf-bgp' main module,
          the YANG submodules have been renamed to
          'ietf-bmp-bgp-rib-attributes' and ietf-bmp-bgp-rib-tables'.</t>

        <t>If 'ietf-bgp-rib-attributes' and 'ietf-bgp-rib-tables' would
          not be 'ietf-bgp' submodules, they could be reused as is with
          'ietf-bmp-bgp-rib-entry'. Since this would imply than a
          normative document dependency a reasonable timeline needs to
          be coordinated. Once these clarifications have been concluded
          this section remains. The <xref
            target="I-D.ietf-idr-bgp-model" /> authors are being honored
          under <xref target="Contributors" /> for their contribution on
          the BGP YANG modelling this document uses.</t>
      </section>

      <section>
        <name>Relationship to draft-ietf-grow-bmp-yang</name>

        <t><xref
            target="I-D.ietf-grow-bmp-yang" />
          defines with 'ietf-bmp' YANG module the configuration and
					monitoring of BMP. While there is no direct relationship
					between this document and its defined YANG modules, it is
					worth mentioning that the with <xref
					target="I-D.ietf-grow-bmp-yang" /> subscribed BMP data is
					being transformed at BMP monitoring stations to Message
					Brokers as described in this document.</t>
      </section>

    </section>

    <section>
      <name>BMP YANG Modules</name>

      <t>The BMP YANG module for Network Telemetry messages defines the
        BMP subscription metadata and depending on BMP Message type
        different metadata structures.</t>

      <t>Where the 3 BGP RIB YANG submodules extend the BMP YANG module
        with BGP RIB structures for BMP route-monitoring and
        route-mirroring Message types.</t>

      <!-- ietf-bmp-telemetry-message YANG Tree -->
      <figure anchor="ietf-bmp-telemetry-message-tree"
        title="YANG tree diagram for 'ietf-bmp-telemetry-message' module.">
        <sourcecode type="yangtree">
<![CDATA[
module: ietf-bmp-telemetry-message

  structure message:
    +-- version?          uint8
    +-- (message-type)?
       +--:(route-monitoring)
       |  +-- route-monitoring
       |     +-- peer-type?            peer-type
       |     +-- peer-flags?           uint8
       |     +-- peer-distinguisher?   rt-types:route-distinguisher
       |     +-- peer-address?         inet:ip-address
       |     +-- peer-as?              uint32
       |     +-- timestamp?            yang:date-and-time
       |     +-- afi-safi-type         identityref
       |     +-- rib-entry
       |        +-- (afi-safi)
       |           +--:(ipv4-unicast)
       |           |  +-- ipv4-unicast
       |           |     +-- (rib-type)
       |           |        +--:(loc-rib)
       |           |        |  +-- loc-rib
       |           |        |     +-- route
       |           |        |        +-- prefix
       |           |        |        |     inet:ipv4-prefix
       |           |        |        +-- origin?
       |           |        |        |     union
       |           |        |        +-- path-id?
       |           |        |        |     uint32
       |           |        |        +-- attributes
       |           |        |        |  +-- origin?
       |           |        |        |  |     bt:bgp-origin-attr-type
       |           |        |        |  +-- as-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- next-hop?
       |           |        |        |  |     inet:ip-address
       |           |        |        |  +-- link-local-next-hop?
       |           |        |        |  |     inet:ipv6-address
       |           |        |        |  +-- med?
       |           |        |        |  |     uint32
       |           |        |        |  +-- local-pref?
       |           |        |        |  |     uint32
       |           |        |        |  +-- as4-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- aggregator
       |           |        |        |  |  +-- as?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- aggregator4
       |           |        |        |  |  +-- as4?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- atomic-aggregate?
       |           |        |        |  |     boolean
       |           |        |        |  +-- originator-id?
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- cluster-list*
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- aigp-metric?
       |           |        |        |        uint64
       |           |        |        +-- community*
       |           |        |        |     union
       |           |        |        +-- ext-community*
       |           |        |        |     bct:bgp-ext-community-type
       |           |        |        +-- ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- ipv6-ext-community*
       |           |        |        |     bct:bgp-ipv6-ext-community-type
       |           |        |        +-- ipv6-ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- large-community*
       |           |        |        |     bct:bgp-large-community-type
       |           |        |        +-- last-modified?
       |           |        |        |     yang:timeticks
       |           |        |        +-- eligible-route?
       |           |        |        |     boolean
       |           |        |        +-- ineligible-reason?
       |           |        |        |     identityref
       |           |        |        +-- unknown-attributes
       |           |        |        |  +-- unknown-attribute*
       |           |        |        |        [attr-type]
       |           |        |        |     +-- attr-type     uint8
       |           |        |        |     +-- optional?     boolean
       |           |        |        |     +-- transitive?   boolean
       |           |        |        |     +-- partial?      boolean
       |           |        |        |     +-- extended?     boolean
       |           |        |        |     +-- attr-len?     uint16
       |           |        |        |     +-- attr-value?   binary
       |           |        |        +-- reject-reason?
       |           |        |              union
       |           |        +--:(adj-rib-in-pre)
       |           |        |  +-- adj-rib-in-pre
       |           |        |     +-- route
       |           |        |        +-- prefix?
       |           |        |        |     inet:ipv4-prefix
       |           |        |        +-- path-id?
       |           |        |        |     uint32
       |           |        |        +-- attributes
       |           |        |        |  +-- origin?
       |           |        |        |  |     bt:bgp-origin-attr-type
       |           |        |        |  +-- as-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- next-hop?
       |           |        |        |  |     inet:ip-address
       |           |        |        |  +-- link-local-next-hop?
       |           |        |        |  |     inet:ipv6-address
       |           |        |        |  +-- med?
       |           |        |        |  |     uint32
       |           |        |        |  +-- local-pref?
       |           |        |        |  |     uint32
       |           |        |        |  +-- as4-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- aggregator
       |           |        |        |  |  +-- as?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- aggregator4
       |           |        |        |  |  +-- as4?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- atomic-aggregate?
       |           |        |        |  |     boolean
       |           |        |        |  +-- originator-id?
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- cluster-list*
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- aigp-metric?
       |           |        |        |        uint64
       |           |        |        +-- community*
       |           |        |        |     union
       |           |        |        +-- ext-community*
       |           |        |        |     bct:bgp-ext-community-type
       |           |        |        +-- ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- ipv6-ext-community*
       |           |        |        |     bct:bgp-ipv6-ext-community-type
       |           |        |        +-- ipv6-ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- large-community*
       |           |        |        |     bct:bgp-large-community-type
       |           |        |        +-- last-modified?
       |           |        |        |     yang:timeticks
       |           |        |        +-- eligible-route?
       |           |        |        |     boolean
       |           |        |        +-- ineligible-reason?
       |           |        |        |     identityref
       |           |        |        +-- unknown-attributes
       |           |        |        |  +-- unknown-attribute*
       |           |        |        |        [attr-type]
       |           |        |        |     +-- attr-type     uint8
       |           |        |        |     +-- optional?     boolean
       |           |        |        |     +-- transitive?   boolean
       |           |        |        |     +-- partial?      boolean
       |           |        |        |     +-- extended?     boolean
       |           |        |        |     +-- attr-len?     uint16
       |           |        |        |     +-- attr-value?   binary
       |           |        |        +-- reject-reason?
       |           |        |              union
       |           |        +--:(adj-rib-in-post)
       |           |        |  +-- adj-rib-in-post
       |           |        |     +-- route
       |           |        |        +-- prefix?
       |           |        |        |     inet:ipv4-prefix
       |           |        |        +-- path-id?
       |           |        |        |     uint32
       |           |        |        +-- attributes
       |           |        |        |  +-- origin?
       |           |        |        |  |     bt:bgp-origin-attr-type
       |           |        |        |  +-- as-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- next-hop?
       |           |        |        |  |     inet:ip-address
       |           |        |        |  +-- link-local-next-hop?
       |           |        |        |  |     inet:ipv6-address
       |           |        |        |  +-- med?
       |           |        |        |  |     uint32
       |           |        |        |  +-- local-pref?
       |           |        |        |  |     uint32
       |           |        |        |  +-- as4-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- aggregator
       |           |        |        |  |  +-- as?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- aggregator4
       |           |        |        |  |  +-- as4?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- atomic-aggregate?
       |           |        |        |  |     boolean
       |           |        |        |  +-- originator-id?
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- cluster-list*
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- aigp-metric?
       |           |        |        |        uint64
       |           |        |        +-- community*
       |           |        |        |     union
       |           |        |        +-- ext-community*
       |           |        |        |     bct:bgp-ext-community-type
       |           |        |        +-- ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- ipv6-ext-community*
       |           |        |        |     bct:bgp-ipv6-ext-community-type
       |           |        |        +-- ipv6-ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- large-community*
       |           |        |        |     bct:bgp-large-community-type
       |           |        |        +-- last-modified?
       |           |        |        |     yang:timeticks
       |           |        |        +-- eligible-route?
       |           |        |        |     boolean
       |           |        |        +-- ineligible-reason?
       |           |        |        |     identityref
       |           |        |        +-- best-path?
       |           |        |        |     boolean
       |           |        |        +-- unknown-attributes
       |           |        |        |  +-- unknown-attribute*
       |           |        |        |        [attr-type]
       |           |        |        |     +-- attr-type     uint8
       |           |        |        |     +-- optional?     boolean
       |           |        |        |     +-- transitive?   boolean
       |           |        |        |     +-- partial?      boolean
       |           |        |        |     +-- extended?     boolean
       |           |        |        |     +-- attr-len?     uint16
       |           |        |        |     +-- attr-value?   binary
       |           |        |        +-- reject-reason?
       |           |        |              union
       |           |        +--:(adj-rib-out-pre)
       |           |        |  +-- adj-rib-out-pre
       |           |        |     +-- route
       |           |        |        +-- prefix?
       |           |        |        |     inet:ipv4-prefix
       |           |        |        +-- path-id?
       |           |        |        |     uint32
       |           |        |        +-- attributes
       |           |        |        |  +-- origin?
       |           |        |        |  |     bt:bgp-origin-attr-type
       |           |        |        |  +-- as-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- next-hop?
       |           |        |        |  |     inet:ip-address
       |           |        |        |  +-- link-local-next-hop?
       |           |        |        |  |     inet:ipv6-address
       |           |        |        |  +-- med?
       |           |        |        |  |     uint32
       |           |        |        |  +-- local-pref?
       |           |        |        |  |     uint32
       |           |        |        |  +-- as4-path
       |           |        |        |  |  +-- segment*
       |           |        |        |  |     +-- type?
       |           |        |        |  |     |     identityref
       |           |        |        |  |     +-- member*
       |           |        |        |  |           inet:as-number
       |           |        |        |  +-- aggregator
       |           |        |        |  |  +-- as?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- aggregator4
       |           |        |        |  |  +-- as4?
       |           |        |        |  |  |     inet:as-number
       |           |        |        |  |  +-- identifier?
       |           |        |        |  |        yang:dotted-quad
       |           |        |        |  +-- atomic-aggregate?
       |           |        |        |  |     boolean
       |           |        |        |  +-- originator-id?
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- cluster-list*
       |           |        |        |  |     yang:dotted-quad
       |           |        |        |  +-- aigp-metric?
       |           |        |        |        uint64
       |           |        |        +-- community*
       |           |        |        |     union
       |           |        |        +-- ext-community*
       |           |        |        |     bct:bgp-ext-community-type
       |           |        |        +-- ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- ipv6-ext-community*
       |           |        |        |     bct:bgp-ipv6-ext-community-type
       |           |        |        +-- ipv6-ext-community-raw*
       |           |        |        |     string
       |           |        |        +-- large-community*
       |           |        |        |     bct:bgp-large-community-type
       |           |        |        +-- last-modified?
       |           |        |        |     yang:timeticks
       |           |        |        +-- eligible-route?
       |           |        |        |     boolean
       |           |        |        +-- ineligible-reason?
       |           |        |        |     identityref
       |           |        |        +-- unknown-attributes
       |           |        |        |  +-- unknown-attribute*
       |           |        |        |        [attr-type]
       |           |        |        |     +-- attr-type     uint8
       |           |        |        |     +-- optional?     boolean
       |           |        |        |     +-- transitive?   boolean
       |           |        |        |     +-- partial?      boolean
       |           |        |        |     +-- extended?     boolean
       |           |        |        |     +-- attr-len?     uint16
       |           |        |        |     +-- attr-value?   binary
       |           |        |        +-- reject-reason?
       |           |        |              union
       |           |        +--:(adj-rib-out-post)
       |           |           +-- adj-rib-out-post
       |           |              +-- route
       |           |                 +-- prefix?
       |           |                 |     inet:ipv4-prefix
       |           |                 +-- path-id?
       |           |                 |     uint32
       |           |                 +-- attributes
       |           |                 |  +-- origin?
       |           |                 |  |     bt:bgp-origin-attr-type
       |           |                 |  +-- as-path
       |           |                 |  |  +-- segment*
       |           |                 |  |     +-- type?
       |           |                 |  |     |     identityref
       |           |                 |  |     +-- member*
       |           |                 |  |           inet:as-number
       |           |                 |  +-- next-hop?
       |           |                 |  |     inet:ip-address
       |           |                 |  +-- link-local-next-hop?
       |           |                 |  |     inet:ipv6-address
       |           |                 |  +-- med?
       |           |                 |  |     uint32
       |           |                 |  +-- local-pref?
       |           |                 |  |     uint32
       |           |                 |  +-- as4-path
       |           |                 |  |  +-- segment*
       |           |                 |  |     +-- type?
       |           |                 |  |     |     identityref
       |           |                 |  |     +-- member*
       |           |                 |  |           inet:as-number
       |           |                 |  +-- aggregator
       |           |                 |  |  +-- as?
       |           |                 |  |  |     inet:as-number
       |           |                 |  |  +-- identifier?
       |           |                 |  |        yang:dotted-quad
       |           |                 |  +-- aggregator4
       |           |                 |  |  +-- as4?
       |           |                 |  |  |     inet:as-number
       |           |                 |  |  +-- identifier?
       |           |                 |  |        yang:dotted-quad
       |           |                 |  +-- atomic-aggregate?
       |           |                 |  |     boolean
       |           |                 |  +-- originator-id?
       |           |                 |  |     yang:dotted-quad
       |           |                 |  +-- cluster-list*
       |           |                 |  |     yang:dotted-quad
       |           |                 |  +-- aigp-metric?
       |           |                 |        uint64
       |           |                 +-- community*
       |           |                 |     union
       |           |                 +-- ext-community*
       |           |                 |     bct:bgp-ext-community-type
       |           |                 +-- ext-community-raw*
       |           |                 |     string
       |           |                 +-- ipv6-ext-community*
       |           |                 |     bct:bgp-ipv6-ext-community-type
       |           |                 +-- ipv6-ext-community-raw*
       |           |                 |     string
       |           |                 +-- large-community*
       |           |                 |     bct:bgp-large-community-type
       |           |                 +-- last-modified?
       |           |                 |     yang:timeticks
       |           |                 +-- eligible-route?
       |           |                 |     boolean
       |           |                 +-- ineligible-reason?
       |           |                 |     identityref
       |           |                 +-- unknown-attributes
       |           |                 |  +-- unknown-attribute*
       |           |                 |        [attr-type]
       |           |                 |     +-- attr-type     uint8
       |           |                 |     +-- optional?     boolean
       |           |                 |     +-- transitive?   boolean
       |           |                 |     +-- partial?      boolean
       |           |                 |     +-- extended?     boolean
       |           |                 |     +-- attr-len?     uint16
       |           |                 |     +-- attr-value?   binary
       |           |                 +-- reject-reason?
       |           |                       union
       |           +--:(ipv6-unicast)
       |              +-- ipv6-unicast
       |                 +-- (rib-type)
       |                    +--:(loc-rib)
       |                    |  +-- loc-rib
       |                    |     +-- route
       |                    |        +-- prefix
       |                    |        |     inet:ipv6-prefix
       |                    |        +-- origin?
       |                    |        |     union
       |                    |        +-- path-id?
       |                    |        |     uint32
       |                    |        +-- attributes
       |                    |        |  +-- origin?
       |                    |        |  |     bt:bgp-origin-attr-type
       |                    |        |  +-- as-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- next-hop?
       |                    |        |  |     inet:ip-address
       |                    |        |  +-- link-local-next-hop?
       |                    |        |  |     inet:ipv6-address
       |                    |        |  +-- med?
       |                    |        |  |     uint32
       |                    |        |  +-- local-pref?
       |                    |        |  |     uint32
       |                    |        |  +-- as4-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- aggregator
       |                    |        |  |  +-- as?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- aggregator4
       |                    |        |  |  +-- as4?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- atomic-aggregate?
       |                    |        |  |     boolean
       |                    |        |  +-- originator-id?
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- cluster-list*
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- aigp-metric?
       |                    |        |        uint64
       |                    |        +-- community*
       |                    |        |     union
       |                    |        +-- ext-community*
       |                    |        |     bct:bgp-ext-community-type
       |                    |        +-- ext-community-raw*
       |                    |        |     string
       |                    |        +-- ipv6-ext-community*
       |                    |        |     bct:bgp-ipv6-ext-community-type
       |                    |        +-- ipv6-ext-community-raw*
       |                    |        |     string
       |                    |        +-- large-community*
       |                    |        |     bct:bgp-large-community-type
       |                    |        +-- last-modified?
       |                    |        |     yang:timeticks
       |                    |        +-- eligible-route?
       |                    |        |     boolean
       |                    |        +-- ineligible-reason?
       |                    |        |     identityref
       |                    |        +-- unknown-attributes
       |                    |        |  +-- unknown-attribute*
       |                    |        |        [attr-type]
       |                    |        |     +-- attr-type     uint8
       |                    |        |     +-- optional?     boolean
       |                    |        |     +-- transitive?   boolean
       |                    |        |     +-- partial?      boolean
       |                    |        |     +-- extended?     boolean
       |                    |        |     +-- attr-len?     uint16
       |                    |        |     +-- attr-value?   binary
       |                    |        +-- reject-reason?
       |                    |              union
       |                    +--:(adj-rib-in-pre)
       |                    |  +-- adj-rib-in-pre
       |                    |     +-- route
       |                    |        +-- prefix?
       |                    |        |     inet:ipv6-prefix
       |                    |        +-- path-id?
       |                    |        |     uint32
       |                    |        +-- attributes
       |                    |        |  +-- origin?
       |                    |        |  |     bt:bgp-origin-attr-type
       |                    |        |  +-- as-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- next-hop?
       |                    |        |  |     inet:ip-address
       |                    |        |  +-- link-local-next-hop?
       |                    |        |  |     inet:ipv6-address
       |                    |        |  +-- med?
       |                    |        |  |     uint32
       |                    |        |  +-- local-pref?
       |                    |        |  |     uint32
       |                    |        |  +-- as4-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- aggregator
       |                    |        |  |  +-- as?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- aggregator4
       |                    |        |  |  +-- as4?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- atomic-aggregate?
       |                    |        |  |     boolean
       |                    |        |  +-- originator-id?
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- cluster-list*
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- aigp-metric?
       |                    |        |        uint64
       |                    |        +-- community*
       |                    |        |     union
       |                    |        +-- ext-community*
       |                    |        |     bct:bgp-ext-community-type
       |                    |        +-- ext-community-raw*
       |                    |        |     string
       |                    |        +-- ipv6-ext-community*
       |                    |        |     bct:bgp-ipv6-ext-community-type
       |                    |        +-- ipv6-ext-community-raw*
       |                    |        |     string
       |                    |        +-- large-community*
       |                    |        |     bct:bgp-large-community-type
       |                    |        +-- last-modified?
       |                    |        |     yang:timeticks
       |                    |        +-- eligible-route?
       |                    |        |     boolean
       |                    |        +-- ineligible-reason?
       |                    |        |     identityref
       |                    |        +-- unknown-attributes
       |                    |        |  +-- unknown-attribute*
       |                    |        |        [attr-type]
       |                    |        |     +-- attr-type     uint8
       |                    |        |     +-- optional?     boolean
       |                    |        |     +-- transitive?   boolean
       |                    |        |     +-- partial?      boolean
       |                    |        |     +-- extended?     boolean
       |                    |        |     +-- attr-len?     uint16
       |                    |        |     +-- attr-value?   binary
       |                    |        +-- reject-reason?
       |                    |              union
       |                    +--:(adj-rib-in-post)
       |                    |  +-- adj-rib-in-post
       |                    |     +-- route
       |                    |        +-- prefix?
       |                    |        |     inet:ipv6-prefix
       |                    |        +-- path-id?
       |                    |        |     uint32
       |                    |        +-- attributes
       |                    |        |  +-- origin?
       |                    |        |  |     bt:bgp-origin-attr-type
       |                    |        |  +-- as-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- next-hop?
       |                    |        |  |     inet:ip-address
       |                    |        |  +-- link-local-next-hop?
       |                    |        |  |     inet:ipv6-address
       |                    |        |  +-- med?
       |                    |        |  |     uint32
       |                    |        |  +-- local-pref?
       |                    |        |  |     uint32
       |                    |        |  +-- as4-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- aggregator
       |                    |        |  |  +-- as?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- aggregator4
       |                    |        |  |  +-- as4?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- atomic-aggregate?
       |                    |        |  |     boolean
       |                    |        |  +-- originator-id?
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- cluster-list*
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- aigp-metric?
       |                    |        |        uint64
       |                    |        +-- community*
       |                    |        |     union
       |                    |        +-- ext-community*
       |                    |        |     bct:bgp-ext-community-type
       |                    |        +-- ext-community-raw*
       |                    |        |     string
       |                    |        +-- ipv6-ext-community*
       |                    |        |     bct:bgp-ipv6-ext-community-type
       |                    |        +-- ipv6-ext-community-raw*
       |                    |        |     string
       |                    |        +-- large-community*
       |                    |        |     bct:bgp-large-community-type
       |                    |        +-- last-modified?
       |                    |        |     yang:timeticks
       |                    |        +-- eligible-route?
       |                    |        |     boolean
       |                    |        +-- ineligible-reason?
       |                    |        |     identityref
       |                    |        +-- best-path?
       |                    |        |     boolean
       |                    |        +-- unknown-attributes
       |                    |        |  +-- unknown-attribute*
       |                    |        |        [attr-type]
       |                    |        |     +-- attr-type     uint8
       |                    |        |     +-- optional?     boolean
       |                    |        |     +-- transitive?   boolean
       |                    |        |     +-- partial?      boolean
       |                    |        |     +-- extended?     boolean
       |                    |        |     +-- attr-len?     uint16
       |                    |        |     +-- attr-value?   binary
       |                    |        +-- reject-reason?
       |                    |              union
       |                    +--:(adj-rib-out-pre)
       |                    |  +-- adj-rib-out-pre
       |                    |     +-- route
       |                    |        +-- prefix?
       |                    |        |     inet:ipv6-prefix
       |                    |        +-- path-id?
       |                    |        |     uint32
       |                    |        +-- attributes
       |                    |        |  +-- origin?
       |                    |        |  |     bt:bgp-origin-attr-type
       |                    |        |  +-- as-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- next-hop?
       |                    |        |  |     inet:ip-address
       |                    |        |  +-- link-local-next-hop?
       |                    |        |  |     inet:ipv6-address
       |                    |        |  +-- med?
       |                    |        |  |     uint32
       |                    |        |  +-- local-pref?
       |                    |        |  |     uint32
       |                    |        |  +-- as4-path
       |                    |        |  |  +-- segment*
       |                    |        |  |     +-- type?
       |                    |        |  |     |     identityref
       |                    |        |  |     +-- member*
       |                    |        |  |           inet:as-number
       |                    |        |  +-- aggregator
       |                    |        |  |  +-- as?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- aggregator4
       |                    |        |  |  +-- as4?
       |                    |        |  |  |     inet:as-number
       |                    |        |  |  +-- identifier?
       |                    |        |  |        yang:dotted-quad
       |                    |        |  +-- atomic-aggregate?
       |                    |        |  |     boolean
       |                    |        |  +-- originator-id?
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- cluster-list*
       |                    |        |  |     yang:dotted-quad
       |                    |        |  +-- aigp-metric?
       |                    |        |        uint64
       |                    |        +-- community*
       |                    |        |     union
       |                    |        +-- ext-community*
       |                    |        |     bct:bgp-ext-community-type
       |                    |        +-- ext-community-raw*
       |                    |        |     string
       |                    |        +-- ipv6-ext-community*
       |                    |        |     bct:bgp-ipv6-ext-community-type
       |                    |        +-- ipv6-ext-community-raw*
       |                    |        |     string
       |                    |        +-- large-community*
       |                    |        |     bct:bgp-large-community-type
       |                    |        +-- last-modified?
       |                    |        |     yang:timeticks
       |                    |        +-- eligible-route?
       |                    |        |     boolean
       |                    |        +-- ineligible-reason?
       |                    |        |     identityref
       |                    |        +-- unknown-attributes
       |                    |        |  +-- unknown-attribute*
       |                    |        |        [attr-type]
       |                    |        |     +-- attr-type     uint8
       |                    |        |     +-- optional?     boolean
       |                    |        |     +-- transitive?   boolean
       |                    |        |     +-- partial?      boolean
       |                    |        |     +-- extended?     boolean
       |                    |        |     +-- attr-len?     uint16
       |                    |        |     +-- attr-value?   binary
       |                    |        +-- reject-reason?
       |                    |              union
       |                    +--:(adj-rib-out-post)
       |                       +-- adj-rib-out-post
       |                          +-- route
       |                             +-- prefix?
       |                             |     inet:ipv6-prefix
       |                             +-- path-id?
       |                             |     uint32
       |                             +-- attributes
       |                             |  +-- origin?
       |                             |  |     bt:bgp-origin-attr-type
       |                             |  +-- as-path
       |                             |  |  +-- segment*
       |                             |  |     +-- type?
       |                             |  |     |     identityref
       |                             |  |     +-- member*
       |                             |  |           inet:as-number
       |                             |  +-- next-hop?
       |                             |  |     inet:ip-address
       |                             |  +-- link-local-next-hop?
       |                             |  |     inet:ipv6-address
       |                             |  +-- med?
       |                             |  |     uint32
       |                             |  +-- local-pref?
       |                             |  |     uint32
       |                             |  +-- as4-path
       |                             |  |  +-- segment*
       |                             |  |     +-- type?
       |                             |  |     |     identityref
       |                             |  |     +-- member*
       |                             |  |           inet:as-number
       |                             |  +-- aggregator
       |                             |  |  +-- as?
       |                             |  |  |     inet:as-number
       |                             |  |  +-- identifier?
       |                             |  |        yang:dotted-quad
       |                             |  +-- aggregator4
       |                             |  |  +-- as4?
       |                             |  |  |     inet:as-number
       |                             |  |  +-- identifier?
       |                             |  |        yang:dotted-quad
       |                             |  +-- atomic-aggregate?
       |                             |  |     boolean
       |                             |  +-- originator-id?
       |                             |  |     yang:dotted-quad
       |                             |  +-- cluster-list*
       |                             |  |     yang:dotted-quad
       |                             |  +-- aigp-metric?
       |                             |        uint64
       |                             +-- community*
       |                             |     union
       |                             +-- ext-community*
       |                             |     bct:bgp-ext-community-type
       |                             +-- ext-community-raw*
       |                             |     string
       |                             +-- ipv6-ext-community*
       |                             |     bct:bgp-ipv6-ext-community-type
       |                             +-- ipv6-ext-community-raw*
       |                             |     string
       |                             +-- large-community*
       |                             |     bct:bgp-large-community-type
       |                             +-- last-modified?
       |                             |     yang:timeticks
       |                             +-- eligible-route?
       |                             |     boolean
       |                             +-- ineligible-reason?
       |                             |     identityref
       |                             +-- unknown-attributes
       |                             |  +-- unknown-attribute*
       |                             |        [attr-type]
       |                             |     +-- attr-type     uint8
       |                             |     +-- optional?     boolean
       |                             |     +-- transitive?   boolean
       |                             |     +-- partial?      boolean
       |                             |     +-- extended?     boolean
       |                             |     +-- attr-len?     uint16
       |                             |     +-- attr-value?   binary
       |                             +-- reject-reason?
       |                                   union
       +--:(statistics-report)
       |  +-- statistics-report
       |     +-- peer-type?            peer-type
       |     +-- peer-flags?           uint8
       |     +-- peer-distinguisher?   rt-types:route-distinguisher
       |     +-- peer-address?         inet:ip-address
       |     +-- peer-as?              uint32
       |     +-- timestamp?            yang:date-and-time
       |     +-- statistics-type?      string
       |     +-- statistics-data?      uint64
       +--:(peer-down-notification)
       |  +-- peer-down-notification
       |     +-- peer-type?            peer-type
       |     +-- peer-flags?           uint8
       |     +-- peer-distinguisher?   rt-types:route-distinguisher
       |     +-- peer-address?         inet:ip-address
       |     +-- peer-as?              uint32
       |     +-- timestamp?            yang:date-and-time
       +--:(peer-up-notification)
       |  +-- peer-up-notification
       |     +-- peer-type?            peer-type
       |     +-- peer-flags?           uint8
       |     +-- peer-distinguisher?   rt-types:route-distinguisher
       |     +-- peer-address?         inet:ip-address
       |     +-- peer-as?              uint32
       |     +-- timestamp?            yang:date-and-time
       +--:(initiation-message)
       |  +-- initiation-message
       |     +-- string?      string
       |     +-- sys-descr?   string
       |     +-- sys-name?    string
       +--:(termination-message)
       |  +-- termination-message
       |     +-- string?   string
       |     +-- reason?   enumeration
       +--:(route-mirroring-message)
          +-- route-mirroring-message
             +-- peer-type?            peer-type
             +-- peer-flags?           uint8
             +-- peer-distinguisher?   rt-types:route-distinguisher
             +-- peer-address?         inet:ip-address
             +-- peer-as?              uint32
             +-- timestamp?            yang:date-and-time
             +-- afi-safi-type         identityref
             +-- rib-entry
             |  +-- (afi-safi)
             |     +--:(ipv4-unicast)
             |     |  +-- ipv4-unicast
             |     |     +-- (rib-type)
             |     |        +--:(loc-rib)
             |     |        |  +-- loc-rib
             |     |        |     +-- route
             |     |        |        +-- prefix
             |     |        |        |     inet:ipv4-prefix
             |     |        |        +-- origin?
             |     |        |        |     union
             |     |        |        +-- path-id?
             |     |        |        |     uint32
             |     |        |        +-- attributes
             |     |        |        |  +-- origin?
             |     |        |        |  |     bt:bgp-origin-attr-type
             |     |        |        |  +-- as-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- next-hop?
             |     |        |        |  |     inet:ip-address
             |     |        |        |  +-- link-local-next-hop?
             |     |        |        |  |     inet:ipv6-address
             |     |        |        |  +-- med?
             |     |        |        |  |     uint32
             |     |        |        |  +-- local-pref?
             |     |        |        |  |     uint32
             |     |        |        |  +-- as4-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- aggregator
             |     |        |        |  |  +-- as?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- aggregator4
             |     |        |        |  |  +-- as4?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- atomic-aggregate?
             |     |        |        |  |     boolean
             |     |        |        |  +-- originator-id?
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- cluster-list*
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- aigp-metric?
             |     |        |        |        uint64
             |     |        |        +-- community*
             |     |        |        |     union
             |     |        |        +-- ext-community*
             |     |        |        |     bct:bgp-ext-community-type
             |     |        |        +-- ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- ipv6-ext-community*
             |     |        |        |     bct:bgp-ipv6-ext-community-type
             |     |        |        +-- ipv6-ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- large-community*
             |     |        |        |     bct:bgp-large-community-type
             |     |        |        +-- last-modified?
             |     |        |        |     yang:timeticks
             |     |        |        +-- eligible-route?
             |     |        |        |     boolean
             |     |        |        +-- ineligible-reason?
             |     |        |        |     identityref
             |     |        |        +-- unknown-attributes
             |     |        |        |  +-- unknown-attribute*
             |     |        |        |        [attr-type]
             |     |        |        |     +-- attr-type     uint8
             |     |        |        |     +-- optional?     boolean
             |     |        |        |     +-- transitive?   boolean
             |     |        |        |     +-- partial?      boolean
             |     |        |        |     +-- extended?     boolean
             |     |        |        |     +-- attr-len?     uint16
             |     |        |        |     +-- attr-value?   binary
             |     |        |        +-- reject-reason?
             |     |        |              union
             |     |        +--:(adj-rib-in-pre)
             |     |        |  +-- adj-rib-in-pre
             |     |        |     +-- route
             |     |        |        +-- prefix?
             |     |        |        |     inet:ipv4-prefix
             |     |        |        +-- path-id?
             |     |        |        |     uint32
             |     |        |        +-- attributes
             |     |        |        |  +-- origin?
             |     |        |        |  |     bt:bgp-origin-attr-type
             |     |        |        |  +-- as-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- next-hop?
             |     |        |        |  |     inet:ip-address
             |     |        |        |  +-- link-local-next-hop?
             |     |        |        |  |     inet:ipv6-address
             |     |        |        |  +-- med?
             |     |        |        |  |     uint32
             |     |        |        |  +-- local-pref?
             |     |        |        |  |     uint32
             |     |        |        |  +-- as4-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- aggregator
             |     |        |        |  |  +-- as?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- aggregator4
             |     |        |        |  |  +-- as4?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- atomic-aggregate?
             |     |        |        |  |     boolean
             |     |        |        |  +-- originator-id?
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- cluster-list*
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- aigp-metric?
             |     |        |        |        uint64
             |     |        |        +-- community*
             |     |        |        |     union
             |     |        |        +-- ext-community*
             |     |        |        |     bct:bgp-ext-community-type
             |     |        |        +-- ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- ipv6-ext-community*
             |     |        |        |     bct:bgp-ipv6-ext-community-type
             |     |        |        +-- ipv6-ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- large-community*
             |     |        |        |     bct:bgp-large-community-type
             |     |        |        +-- last-modified?
             |     |        |        |     yang:timeticks
             |     |        |        +-- eligible-route?
             |     |        |        |     boolean
             |     |        |        +-- ineligible-reason?
             |     |        |        |     identityref
             |     |        |        +-- unknown-attributes
             |     |        |        |  +-- unknown-attribute*
             |     |        |        |        [attr-type]
             |     |        |        |     +-- attr-type     uint8
             |     |        |        |     +-- optional?     boolean
             |     |        |        |     +-- transitive?   boolean
             |     |        |        |     +-- partial?      boolean
             |     |        |        |     +-- extended?     boolean
             |     |        |        |     +-- attr-len?     uint16
             |     |        |        |     +-- attr-value?   binary
             |     |        |        +-- reject-reason?
             |     |        |              union
             |     |        +--:(adj-rib-in-post)
             |     |        |  +-- adj-rib-in-post
             |     |        |     +-- route
             |     |        |        +-- prefix?
             |     |        |        |     inet:ipv4-prefix
             |     |        |        +-- path-id?
             |     |        |        |     uint32
             |     |        |        +-- attributes
             |     |        |        |  +-- origin?
             |     |        |        |  |     bt:bgp-origin-attr-type
             |     |        |        |  +-- as-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- next-hop?
             |     |        |        |  |     inet:ip-address
             |     |        |        |  +-- link-local-next-hop?
             |     |        |        |  |     inet:ipv6-address
             |     |        |        |  +-- med?
             |     |        |        |  |     uint32
             |     |        |        |  +-- local-pref?
             |     |        |        |  |     uint32
             |     |        |        |  +-- as4-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- aggregator
             |     |        |        |  |  +-- as?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- aggregator4
             |     |        |        |  |  +-- as4?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- atomic-aggregate?
             |     |        |        |  |     boolean
             |     |        |        |  +-- originator-id?
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- cluster-list*
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- aigp-metric?
             |     |        |        |        uint64
             |     |        |        +-- community*
             |     |        |        |     union
             |     |        |        +-- ext-community*
             |     |        |        |     bct:bgp-ext-community-type
             |     |        |        +-- ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- ipv6-ext-community*
             |     |        |        |     bct:bgp-ipv6-ext-community-type
             |     |        |        +-- ipv6-ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- large-community*
             |     |        |        |     bct:bgp-large-community-type
             |     |        |        +-- last-modified?
             |     |        |        |     yang:timeticks
             |     |        |        +-- eligible-route?
             |     |        |        |     boolean
             |     |        |        +-- ineligible-reason?
             |     |        |        |     identityref
             |     |        |        +-- best-path?
             |     |        |        |     boolean
             |     |        |        +-- unknown-attributes
             |     |        |        |  +-- unknown-attribute*
             |     |        |        |        [attr-type]
             |     |        |        |     +-- attr-type     uint8
             |     |        |        |     +-- optional?     boolean
             |     |        |        |     +-- transitive?   boolean
             |     |        |        |     +-- partial?      boolean
             |     |        |        |     +-- extended?     boolean
             |     |        |        |     +-- attr-len?     uint16
             |     |        |        |     +-- attr-value?   binary
             |     |        |        +-- reject-reason?
             |     |        |              union
             |     |        +--:(adj-rib-out-pre)
             |     |        |  +-- adj-rib-out-pre
             |     |        |     +-- route
             |     |        |        +-- prefix?
             |     |        |        |     inet:ipv4-prefix
             |     |        |        +-- path-id?
             |     |        |        |     uint32
             |     |        |        +-- attributes
             |     |        |        |  +-- origin?
             |     |        |        |  |     bt:bgp-origin-attr-type
             |     |        |        |  +-- as-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- next-hop?
             |     |        |        |  |     inet:ip-address
             |     |        |        |  +-- link-local-next-hop?
             |     |        |        |  |     inet:ipv6-address
             |     |        |        |  +-- med?
             |     |        |        |  |     uint32
             |     |        |        |  +-- local-pref?
             |     |        |        |  |     uint32
             |     |        |        |  +-- as4-path
             |     |        |        |  |  +-- segment*
             |     |        |        |  |     +-- type?
             |     |        |        |  |     |     identityref
             |     |        |        |  |     +-- member*
             |     |        |        |  |           inet:as-number
             |     |        |        |  +-- aggregator
             |     |        |        |  |  +-- as?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- aggregator4
             |     |        |        |  |  +-- as4?
             |     |        |        |  |  |     inet:as-number
             |     |        |        |  |  +-- identifier?
             |     |        |        |  |        yang:dotted-quad
             |     |        |        |  +-- atomic-aggregate?
             |     |        |        |  |     boolean
             |     |        |        |  +-- originator-id?
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- cluster-list*
             |     |        |        |  |     yang:dotted-quad
             |     |        |        |  +-- aigp-metric?
             |     |        |        |        uint64
             |     |        |        +-- community*
             |     |        |        |     union
             |     |        |        +-- ext-community*
             |     |        |        |     bct:bgp-ext-community-type
             |     |        |        +-- ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- ipv6-ext-community*
             |     |        |        |     bct:bgp-ipv6-ext-community-type
             |     |        |        +-- ipv6-ext-community-raw*
             |     |        |        |     string
             |     |        |        +-- large-community*
             |     |        |        |     bct:bgp-large-community-type
             |     |        |        +-- last-modified?
             |     |        |        |     yang:timeticks
             |     |        |        +-- eligible-route?
             |     |        |        |     boolean
             |     |        |        +-- ineligible-reason?
             |     |        |        |     identityref
             |     |        |        +-- unknown-attributes
             |     |        |        |  +-- unknown-attribute*
             |     |        |        |        [attr-type]
             |     |        |        |     +-- attr-type     uint8
             |     |        |        |     +-- optional?     boolean
             |     |        |        |     +-- transitive?   boolean
             |     |        |        |     +-- partial?      boolean
             |     |        |        |     +-- extended?     boolean
             |     |        |        |     +-- attr-len?     uint16
             |     |        |        |     +-- attr-value?   binary
             |     |        |        +-- reject-reason?
             |     |        |              union
             |     |        +--:(adj-rib-out-post)
             |     |           +-- adj-rib-out-post
             |     |              +-- route
             |     |                 +-- prefix?
             |     |                 |     inet:ipv4-prefix
             |     |                 +-- path-id?
             |     |                 |     uint32
             |     |                 +-- attributes
             |     |                 |  +-- origin?
             |     |                 |  |     bt:bgp-origin-attr-type
             |     |                 |  +-- as-path
             |     |                 |  |  +-- segment*
             |     |                 |  |     +-- type?
             |     |                 |  |     |     identityref
             |     |                 |  |     +-- member*
             |     |                 |  |           inet:as-number
             |     |                 |  +-- next-hop?
             |     |                 |  |     inet:ip-address
             |     |                 |  +-- link-local-next-hop?
             |     |                 |  |     inet:ipv6-address
             |     |                 |  +-- med?
             |     |                 |  |     uint32
             |     |                 |  +-- local-pref?
             |     |                 |  |     uint32
             |     |                 |  +-- as4-path
             |     |                 |  |  +-- segment*
             |     |                 |  |     +-- type?
             |     |                 |  |     |     identityref
             |     |                 |  |     +-- member*
             |     |                 |  |           inet:as-number
             |     |                 |  +-- aggregator
             |     |                 |  |  +-- as?
             |     |                 |  |  |     inet:as-number
             |     |                 |  |  +-- identifier?
             |     |                 |  |        yang:dotted-quad
             |     |                 |  +-- aggregator4
             |     |                 |  |  +-- as4?
             |     |                 |  |  |     inet:as-number
             |     |                 |  |  +-- identifier?
             |     |                 |  |        yang:dotted-quad
             |     |                 |  +-- atomic-aggregate?
             |     |                 |  |     boolean
             |     |                 |  +-- originator-id?
             |     |                 |  |     yang:dotted-quad
             |     |                 |  +-- cluster-list*
             |     |                 |  |     yang:dotted-quad
             |     |                 |  +-- aigp-metric?
             |     |                 |        uint64
             |     |                 +-- community*
             |     |                 |     union
             |     |                 +-- ext-community*
             |     |                 |     bct:bgp-ext-community-type
             |     |                 +-- ext-community-raw*
             |     |                 |     string
             |     |                 +-- ipv6-ext-community*
             |     |                 |     bct:bgp-ipv6-ext-community-type
             |     |                 +-- ipv6-ext-community-raw*
             |     |                 |     string
             |     |                 +-- large-community*
             |     |                 |     bct:bgp-large-community-type
             |     |                 +-- last-modified?
             |     |                 |     yang:timeticks
             |     |                 +-- eligible-route?
             |     |                 |     boolean
             |     |                 +-- ineligible-reason?
             |     |                 |     identityref
             |     |                 +-- unknown-attributes
             |     |                 |  +-- unknown-attribute*
             |     |                 |        [attr-type]
             |     |                 |     +-- attr-type     uint8
             |     |                 |     +-- optional?     boolean
             |     |                 |     +-- transitive?   boolean
             |     |                 |     +-- partial?      boolean
             |     |                 |     +-- extended?     boolean
             |     |                 |     +-- attr-len?     uint16
             |     |                 |     +-- attr-value?   binary
             |     |                 +-- reject-reason?
             |     |                       union
             |     +--:(ipv6-unicast)
             |        +-- ipv6-unicast
             |           +-- (rib-type)
             |              +--:(loc-rib)
             |              |  +-- loc-rib
             |              |     +-- route
             |              |        +-- prefix
             |              |        |     inet:ipv6-prefix
             |              |        +-- origin?
             |              |        |     union
             |              |        +-- path-id?
             |              |        |     uint32
             |              |        +-- attributes
             |              |        |  +-- origin?
             |              |        |  |     bt:bgp-origin-attr-type
             |              |        |  +-- as-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- next-hop?
             |              |        |  |     inet:ip-address
             |              |        |  +-- link-local-next-hop?
             |              |        |  |     inet:ipv6-address
             |              |        |  +-- med?
             |              |        |  |     uint32
             |              |        |  +-- local-pref?
             |              |        |  |     uint32
             |              |        |  +-- as4-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- aggregator
             |              |        |  |  +-- as?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- aggregator4
             |              |        |  |  +-- as4?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- atomic-aggregate?
             |              |        |  |     boolean
             |              |        |  +-- originator-id?
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- cluster-list*
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- aigp-metric?
             |              |        |        uint64
             |              |        +-- community*
             |              |        |     union
             |              |        +-- ext-community*
             |              |        |     bct:bgp-ext-community-type
             |              |        +-- ext-community-raw*
             |              |        |     string
             |              |        +-- ipv6-ext-community*
             |              |        |     bct:bgp-ipv6-ext-community-type
             |              |        +-- ipv6-ext-community-raw*
             |              |        |     string
             |              |        +-- large-community*
             |              |        |     bct:bgp-large-community-type
             |              |        +-- last-modified?
             |              |        |     yang:timeticks
             |              |        +-- eligible-route?
             |              |        |     boolean
             |              |        +-- ineligible-reason?
             |              |        |     identityref
             |              |        +-- unknown-attributes
             |              |        |  +-- unknown-attribute*
             |              |        |        [attr-type]
             |              |        |     +-- attr-type     uint8
             |              |        |     +-- optional?     boolean
             |              |        |     +-- transitive?   boolean
             |              |        |     +-- partial?      boolean
             |              |        |     +-- extended?     boolean
             |              |        |     +-- attr-len?     uint16
             |              |        |     +-- attr-value?   binary
             |              |        +-- reject-reason?
             |              |              union
             |              +--:(adj-rib-in-pre)
             |              |  +-- adj-rib-in-pre
             |              |     +-- route
             |              |        +-- prefix?
             |              |        |     inet:ipv6-prefix
             |              |        +-- path-id?
             |              |        |     uint32
             |              |        +-- attributes
             |              |        |  +-- origin?
             |              |        |  |     bt:bgp-origin-attr-type
             |              |        |  +-- as-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- next-hop?
             |              |        |  |     inet:ip-address
             |              |        |  +-- link-local-next-hop?
             |              |        |  |     inet:ipv6-address
             |              |        |  +-- med?
             |              |        |  |     uint32
             |              |        |  +-- local-pref?
             |              |        |  |     uint32
             |              |        |  +-- as4-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- aggregator
             |              |        |  |  +-- as?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- aggregator4
             |              |        |  |  +-- as4?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- atomic-aggregate?
             |              |        |  |     boolean
             |              |        |  +-- originator-id?
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- cluster-list*
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- aigp-metric?
             |              |        |        uint64
             |              |        +-- community*
             |              |        |     union
             |              |        +-- ext-community*
             |              |        |     bct:bgp-ext-community-type
             |              |        +-- ext-community-raw*
             |              |        |     string
             |              |        +-- ipv6-ext-community*
             |              |        |     bct:bgp-ipv6-ext-community-type
             |              |        +-- ipv6-ext-community-raw*
             |              |        |     string
             |              |        +-- large-community*
             |              |        |     bct:bgp-large-community-type
             |              |        +-- last-modified?
             |              |        |     yang:timeticks
             |              |        +-- eligible-route?
             |              |        |     boolean
             |              |        +-- ineligible-reason?
             |              |        |     identityref
             |              |        +-- unknown-attributes
             |              |        |  +-- unknown-attribute*
             |              |        |        [attr-type]
             |              |        |     +-- attr-type     uint8
             |              |        |     +-- optional?     boolean
             |              |        |     +-- transitive?   boolean
             |              |        |     +-- partial?      boolean
             |              |        |     +-- extended?     boolean
             |              |        |     +-- attr-len?     uint16
             |              |        |     +-- attr-value?   binary
             |              |        +-- reject-reason?
             |              |              union
             |              +--:(adj-rib-in-post)
             |              |  +-- adj-rib-in-post
             |              |     +-- route
             |              |        +-- prefix?
             |              |        |     inet:ipv6-prefix
             |              |        +-- path-id?
             |              |        |     uint32
             |              |        +-- attributes
             |              |        |  +-- origin?
             |              |        |  |     bt:bgp-origin-attr-type
             |              |        |  +-- as-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- next-hop?
             |              |        |  |     inet:ip-address
             |              |        |  +-- link-local-next-hop?
             |              |        |  |     inet:ipv6-address
             |              |        |  +-- med?
             |              |        |  |     uint32
             |              |        |  +-- local-pref?
             |              |        |  |     uint32
             |              |        |  +-- as4-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- aggregator
             |              |        |  |  +-- as?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- aggregator4
             |              |        |  |  +-- as4?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- atomic-aggregate?
             |              |        |  |     boolean
             |              |        |  +-- originator-id?
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- cluster-list*
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- aigp-metric?
             |              |        |        uint64
             |              |        +-- community*
             |              |        |     union
             |              |        +-- ext-community*
             |              |        |     bct:bgp-ext-community-type
             |              |        +-- ext-community-raw*
             |              |        |     string
             |              |        +-- ipv6-ext-community*
             |              |        |     bct:bgp-ipv6-ext-community-type
             |              |        +-- ipv6-ext-community-raw*
             |              |        |     string
             |              |        +-- large-community*
             |              |        |     bct:bgp-large-community-type
             |              |        +-- last-modified?
             |              |        |     yang:timeticks
             |              |        +-- eligible-route?
             |              |        |     boolean
             |              |        +-- ineligible-reason?
             |              |        |     identityref
             |              |        +-- best-path?
             |              |        |     boolean
             |              |        +-- unknown-attributes
             |              |        |  +-- unknown-attribute*
             |              |        |        [attr-type]
             |              |        |     +-- attr-type     uint8
             |              |        |     +-- optional?     boolean
             |              |        |     +-- transitive?   boolean
             |              |        |     +-- partial?      boolean
             |              |        |     +-- extended?     boolean
             |              |        |     +-- attr-len?     uint16
             |              |        |     +-- attr-value?   binary
             |              |        +-- reject-reason?
             |              |              union
             |              +--:(adj-rib-out-pre)
             |              |  +-- adj-rib-out-pre
             |              |     +-- route
             |              |        +-- prefix?
             |              |        |     inet:ipv6-prefix
             |              |        +-- path-id?
             |              |        |     uint32
             |              |        +-- attributes
             |              |        |  +-- origin?
             |              |        |  |     bt:bgp-origin-attr-type
             |              |        |  +-- as-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- next-hop?
             |              |        |  |     inet:ip-address
             |              |        |  +-- link-local-next-hop?
             |              |        |  |     inet:ipv6-address
             |              |        |  +-- med?
             |              |        |  |     uint32
             |              |        |  +-- local-pref?
             |              |        |  |     uint32
             |              |        |  +-- as4-path
             |              |        |  |  +-- segment*
             |              |        |  |     +-- type?
             |              |        |  |     |     identityref
             |              |        |  |     +-- member*
             |              |        |  |           inet:as-number
             |              |        |  +-- aggregator
             |              |        |  |  +-- as?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- aggregator4
             |              |        |  |  +-- as4?
             |              |        |  |  |     inet:as-number
             |              |        |  |  +-- identifier?
             |              |        |  |        yang:dotted-quad
             |              |        |  +-- atomic-aggregate?
             |              |        |  |     boolean
             |              |        |  +-- originator-id?
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- cluster-list*
             |              |        |  |     yang:dotted-quad
             |              |        |  +-- aigp-metric?
             |              |        |        uint64
             |              |        +-- community*
             |              |        |     union
             |              |        +-- ext-community*
             |              |        |     bct:bgp-ext-community-type
             |              |        +-- ext-community-raw*
             |              |        |     string
             |              |        +-- ipv6-ext-community*
             |              |        |     bct:bgp-ipv6-ext-community-type
             |              |        +-- ipv6-ext-community-raw*
             |              |        |     string
             |              |        +-- large-community*
             |              |        |     bct:bgp-large-community-type
             |              |        +-- last-modified?
             |              |        |     yang:timeticks
             |              |        +-- eligible-route?
             |              |        |     boolean
             |              |        +-- ineligible-reason?
             |              |        |     identityref
             |              |        +-- unknown-attributes
             |              |        |  +-- unknown-attribute*
             |              |        |        [attr-type]
             |              |        |     +-- attr-type     uint8
             |              |        |     +-- optional?     boolean
             |              |        |     +-- transitive?   boolean
             |              |        |     +-- partial?      boolean
             |              |        |     +-- extended?     boolean
             |              |        |     +-- attr-len?     uint16
             |              |        |     +-- attr-value?   binary
             |              |        +-- reject-reason?
             |              |              union
             |              +--:(adj-rib-out-post)
             |                 +-- adj-rib-out-post
             |                    +-- route
             |                       +-- prefix?
             |                       |     inet:ipv6-prefix
             |                       +-- path-id?
             |                       |     uint32
             |                       +-- attributes
             |                       |  +-- origin?
             |                       |  |     bt:bgp-origin-attr-type
             |                       |  +-- as-path
             |                       |  |  +-- segment*
             |                       |  |     +-- type?
             |                       |  |     |     identityref
             |                       |  |     +-- member*
             |                       |  |           inet:as-number
             |                       |  +-- next-hop?
             |                       |  |     inet:ip-address
             |                       |  +-- link-local-next-hop?
             |                       |  |     inet:ipv6-address
             |                       |  +-- med?
             |                       |  |     uint32
             |                       |  +-- local-pref?
             |                       |  |     uint32
             |                       |  +-- as4-path
             |                       |  |  +-- segment*
             |                       |  |     +-- type?
             |                       |  |     |     identityref
             |                       |  |     +-- member*
             |                       |  |           inet:as-number
             |                       |  +-- aggregator
             |                       |  |  +-- as?
             |                       |  |  |     inet:as-number
             |                       |  |  +-- identifier?
             |                       |  |        yang:dotted-quad
             |                       |  +-- aggregator4
             |                       |  |  +-- as4?
             |                       |  |  |     inet:as-number
             |                       |  |  +-- identifier?
             |                       |  |        yang:dotted-quad
             |                       |  +-- atomic-aggregate?
             |                       |  |     boolean
             |                       |  +-- originator-id?
             |                       |  |     yang:dotted-quad
             |                       |  +-- cluster-list*
             |                       |  |     yang:dotted-quad
             |                       |  +-- aigp-metric?
             |                       |        uint64
             |                       +-- community*
             |                       |     union
             |                       +-- ext-community*
             |                       |     bct:bgp-ext-community-type
             |                       +-- ext-community-raw*
             |                       |     string
             |                       +-- ipv6-ext-community*
             |                       |     bct:bgp-ipv6-ext-community-type
             |                       +-- ipv6-ext-community-raw*
             |                       |     string
             |                       +-- large-community*
             |                       |     bct:bgp-large-community-type
             |                       +-- last-modified?
             |                       |     yang:timeticks
             |                       +-- eligible-route?
             |                       |     boolean
             |                       +-- ineligible-reason?
             |                       |     identityref
             |                       +-- unknown-attributes
             |                       |  +-- unknown-attribute*
             |                       |        [attr-type]
             |                       |     +-- attr-type     uint8
             |                       |     +-- optional?     boolean
             |                       |     +-- transitive?   boolean
             |                       |     +-- partial?      boolean
             |                       |     +-- extended?     boolean
             |                       |     +-- attr-len?     uint16
             |                       |     +-- attr-value?   binary
             |                       +-- reject-reason?
             |                             union
             +-- information?          enumeration
]]>
</sourcecode>
      </figure>

      <!-- ietf-bmp-telemetry-message YANG Module -->
      <figure anchor="ietf-bmp-telemetry-message-module"
        title="BMP YANG 'ietf-bmp-telemetry-message' module.">
        <sourcecode name="ietf-bmp-telemetry-message@2026-02-09.yang"
          type="yang" markers="true">
<![CDATA[
module ietf-bmp-telemetry-message {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-bmp-telemetry-message";
  prefix bmptm;

  import ietf-telemetry-message {
    prefix tm;
    reference
      "draft-netana-nmop-message-broker-telemetry-message: Extensible
       YANG Model for Network Telemetry Messages";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 9911: Common YANG Data Types";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 9911: Common YANG Data Types";
  }
  import ietf-routing-types {
    prefix rt-types;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area.";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }
  include ietf-bmp-bgp-rib-entry {
    revision-date 2026-02-09;
  }
  include ietf-bmp-bgp-rib-tables {
    revision-date 2026-02-09;
  }
  include ietf-bmp-bgp-rib-attributes {
    revision-date 2026-02-09;
  }

  organization
    "IETF Draft";
  contact
    "Author:    Thomas Graf
                <mailto:thomas.graf@swisscom.com>
                Paolo Lucente
                <mailto:paolo@ntt.net>
                Leonardo Rodoni
                <mailto:leonardo.rodoni@swisscom.com>";

  description
    "Adds BMP specific subscription metadata to the data collection
     protocol provenance of the ietf-telemetry-message envelope.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
     'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
     'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
     are to be interpreted as described in BCP 14 (RFC 2119)
     (RFC 8174) when, and only when, they appear in all
     capitals, as shown here.

     Copyright (c) 2026 IETF Trust and the persons identified as
       authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or without
     modification, is permitted pursuant to, and subject to the license
     terms contained in, the Revised BSD License set forth in Section
     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX; see the RFC
     itself for full legal notices.";

  revision 2026-02-09 {
    description
      "Initial revision.";
    reference
      "RFC XXXX";
  }

  typedef peer-type {
    type enumeration {
      enum global-instance-peer {
        value 0;
        description
          "Global Instance Peer";
        reference
          "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
      }
      enum rd-instance-peer {
        value 1;
        description
          "RD Instance Peer";
        reference
          "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
      }
      enum local-instance-peer {
        value 2;
        description
          "Local Instance Peer";
        reference
          "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
      }
      enum loc-rib-instance-peer {
        value 3;
        description
          "Loc-RIB Instance Peer";
        reference
          "RFC 9069: Support for Local RIB in the BGP Monitoring Protocol (BMP)";
      }
    }
    description
      "BMP Peer Type.";
    reference
      "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
  }

  grouping per-peer {
    description
      "BMP per-peer header.";
    reference
      "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
    leaf peer-type {
      type peer-type;
      description
        "BMP peer type from per-peer header.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
    }
    leaf peer-flags {
      type uint8;
      description
        "BMP peer flags from per-peer header.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
    }
    leaf peer-distinguisher {
      type rt-types:route-distinguisher;
      description
        "BMP peer distinguisher from per-peer header.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.
         The routing instance on which the encapsulated PDU was
         received.";
    }
    leaf peer-address {
      type inet:ip-address;
      description
        "BMP peer IP address from per-peer header.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2. The
         remote IP address associated with the TCP session over which
         the encapsulated PDU was received.";
    }
    leaf peer-as {
      type uint32;
      description
        "BMP peer autonomous system number from per-peer header. The
         Autonomous System number of the peer from which the
         encapsulated PDU was received.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
    }
    leaf timestamp {
      type yang:date-and-time;
      description
        "BMP timestamp from per-peer header. The time when the
         encapsulated routes were received (one may also think of this
         as the time when they were installed in the Adj-RIB-In).";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
    }
  }

  grouping information {
    description
      "BMP Information.";
    reference
      "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.4.";
    leaf string {
      type string {
        length "1..65535";
      }
      description
        "BMP string type. The Information field contains a free-form
         UTF-8 string.";
    }
    leaf sys-descr {
      type string {
        length "1..65535";
      }
      description
        "BMP sysDescr type. The Information field contains an ASCII
         string whose value MUST be set to be equal to the value of the
         sysDescr MIB-II RFC 1213 object.";
    }
    leaf sys-name {
      type string {
        length "1..65535";
      }
      description
        "BMP sysName type. The Information field contains an ASCII
         string whose value MUST be set to be equal to the value of the
         sysName MIB-II RFC 1213 object.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.2.";
    }
  }

  grouping termination {
    description
      "BMP Termination.";
    reference
      "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.5.";
    leaf string {
      type string {
        length "1..65535";
      }
      description
        "BMP string type. The Information field contains a free-form
         UTF-8 string.";
    }
    leaf reason {
      type enumeration {
        enum administratively-closed {
          value 0;
        }
        enum unspecified {
          value 1;
        }
        enum out-of-resources {
          value 2;
        }
        enum redundant-connection {
          value 3;
        }
        enum permanently-administratively-closed {
          value 4;
        }
      }
    }
  }

  grouping mirroring {
    description
      "BMP Mirroring.";
    reference
      "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.7.";
    leaf information {
      type enumeration {
        enum error-pdu {
          value 0;
        }
        enum message-lost {
          value 1;
        }
      }
    }
  }

  grouping statistics {
    description
      "BMP Statistics.";
    reference
      "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.8.";
    leaf statistics-type {
      type string {
      }
      description
        "BMP statistics type. Defines the type of the statistic carried
         in the Stat Data field.";
    }
    leaf statistics-data {
      type uint64;
      description
        "BMP statistics data. Defines the value of the statistic.";
    }
  }

  sx:structure message {
    description
      "Augments telemetry-message-metadata with BMP specific
       subscription metadata";

    leaf version {
      type uint8;
      description
        "BMP version from common header.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.1.";
    }
    choice message-type {
      description
        "BMP message type from common header.";
      reference
        "RFC 7854: BGP Monitoring Protocol (BMP), Section 4.1.";
      case route-monitoring {
        container route-monitoring {
          uses per-peer;
          uses rib-entry;
        }
      }
      case statistics-report {
        container statistics-report {
          uses per-peer;
          uses statistics;
        }
      }
      case peer-down-notification {
        container peer-down-notification {
          uses per-peer;
        }
      }
      case peer-up-notification {
        container peer-up-notification {
          uses per-peer;
        }
      }
      case initiation-message {
        container initiation-message {
          uses information;
        }
      }
      case termination-message {
        container termination-message {
          uses termination;
        }
      }
      case route-mirroring-message {
        container route-mirroring-message {
          uses per-peer;
          uses rib-entry;
          uses mirroring;
        }
      }
    }
  }
}
]]>
</sourcecode>
      </figure>

      <section anchor="ietf-bmp-bgp-sub-modules">
        <name>BMP BGP RIB YANG Submodules</name>

        <!-- ietf-bmp-bgp-rib-entry YANG Submodule -->
        <figure anchor="ietf-bmp-bgp-rib-entry-submodule"
          title="BMP YANG 'ietf-bmp-bgp-rib-entry' submodule.">
          <sourcecode name="ietf-bmp-bgp-rib-entry@2026-02-09.yang"
            type="yang" markers="true">
<![CDATA[

]]>
</sourcecode>
        </figure>

        <!-- ietf-bmp-bgp-rib-tables YANG Submodule -->
        <figure anchor="ietf-bmp-bgp-rib-tables-submodule"
          title="BMP YANG 'ietf-bmp-bgp-rib-tables' submodule.">
          <sourcecode name="ietf-bmp-bgp-rib-tables@2026-02-09.yang"
            type="yang" markers="true">
<![CDATA[
submodule ietf-bmp-bgp-rib-tables {
  yang-version 1.1;
  belongs-to ietf-bmp-telemetry-message {
    prefix bmptm;
  }

  // import some basic types
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types.";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types.";
  }
  import ietf-routing {
    prefix rt;
    reference
      "RFC 8022: A YANG Data Model for Routing Management.";
  }
  import iana-bgp-rib-types {
    prefix brt;
    reference
      "RFC XXXX: YANG module for Border Gateway Protocol (BGP-4).";
  }

  organization
    "IETF Draft";
  contact
    "Author:    Thomas Graf
                <mailto:thomas.graf@swisscom.com>
                Paolo Lucente
                <mailto:paolo@ntt.net>
                Leonardo Rodoni
                <mailto:leonardo.rodoni@swisscom.com>";

  description
    "This submodule contains structural data definitions for
     BGP routing tables.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2026-02-09 {
    description
      "Initial Version";
    reference
      "RFC XXXX";
  }

  grouping bgp-common-route-annotations-state {
    description
      "Data definitions for flags and other information attached
       to routes in both LOC-RIB and Adj-RIB";
    leaf last-modified {
      type yang:timeticks;
      description
        "Timestamp when this path was last modified.

         The value is the timestamp in seconds relative to
         the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
    }
    leaf eligible-route {
      type boolean;
      description
        "Indicates that the route is eligible for selection for the
         best route in the Loc-Rib in BGP's Decision Process.";
      reference
        "RFC 4271: A Border Gateway Protocol 4 (BGP-4),
         Section 9.1.";
    }
    leaf ineligible-reason {
      type identityref {
        base brt:ineligible-route-reason;
      }
      description
        "If the route is ineligible for selection for the best route
         in the Loc-Rib in BGP's Decision process, this indicates the
         reason.";
      reference
        "RFC 4271: A Border Gateway Protocol 4 (BGP-4),
         Section 9.1.";
    }
  }

  grouping bgp-adj-rib-in-post-route-annotations-state {
    description
      "Data definitions for information attached to routes in the
       Adj-RIB-In post-policy table";
    leaf best-path {
      type boolean;
      default "false";
      description
        "Current path was selected as the best path. Best path
         should indicate that the route is present in BGP Loc-RIB.";
    }
  }

  grouping rib-ext-route-annotations {
    description
      "Extended annotations for routes in the routing tables";
    leaf reject-reason {
      type union {
        type identityref {
          base brt:bgp-not-selected-bestpath;
        }
        type identityref {
          base brt:bgp-not-selected-policy;
        }
      }
      description
        "Indicates the reason the route is not used, either due to
         policy filtering or bestpath selection";
    }
  }

  grouping bgp-loc-rib-common-keys {
    description
      "Common references used in keys for IPv4 and IPv6
       Loc-RIB entries.";
    leaf origin {
      type union {
        type inet:ip-address;
        type identityref {
          base rt:routing-protocol;
        }
      }
      description
        "Indicates the origin of the route. If the route is learned
         from a neighbor, this value is the neighbor address. If
         the route was injected or redistributed from another
         protocol, the origin indicates the source protocol for the
         route.";
    }
    leaf path-id {
      type uint32;
      description
        "If the route is learned from a neighbor, the path-id
         corresponds to the path-id for the route in the
         corresponding adj-rib-in-post table. If the route is
         injected from another protocol, or the neighbor does not
         support BGP add-paths, the path-id should be set
         to zero, also the default value.

         However, YANG does not allow default values to be set
         for parameters that form the key, so a default value
         cannot be set here.";
    }
  }

  grouping ipv4-loc-rib-common {
    description
      "Common structural grouping for the IPv4 Loc-RIB table.";
    container route {
      config false;
      description
        "A single route entry in the Loc-RIB.";
      leaf prefix {
        type inet:ipv4-prefix;
        mandatory true;
        description
          "The IPv4 prefix corresponding to the route.";
      }
      uses bgp-loc-rib-common-keys;
      uses bgp-common-route-attributes;
      uses bgp-common-route-annotations-state;
      uses bgp-unknown-attr-top;
      uses rib-ext-route-annotations;
    }
  }

  grouping ipv6-loc-rib-common {
    description
      "Common structural grouping for the IPv6 Loc-RIB table.";
    container route {
      config false;
      description
        "A single route entry in the Loc-RIB.";
      leaf prefix {
        type inet:ipv6-prefix;
        mandatory true;
        description
          "The IPv6 prefix corresponding to the route.";
      }
      uses bgp-loc-rib-common-keys;
      uses bgp-common-route-attributes;
      uses bgp-common-route-annotations-state;
      uses bgp-unknown-attr-top;
      uses rib-ext-route-annotations;
    }
  }

  grouping ipv4-adj-rib-common {
    description
      "Common structural grouping for each IPv4 Adj-RIB table.";
    container route {
      config false;
      description
        "A single route entry in the IPv4 Adj-RIB table.";
      leaf prefix {
        type inet:ipv4-prefix;
        description
          "The IPv4 prefix corresponding to the route.";
      }
      uses bgp-adj-rib-attr-state;
      uses bgp-common-route-attributes;
      uses bgp-common-route-annotations-state;
      uses bgp-unknown-attr-top;
      uses rib-ext-route-annotations;
    }
  }

  grouping ipv4-adj-rib-in-post {
    description
      "Common structural grouping for the IPv4 Adj-RIB-In
       post-policy table.";
    container route {
      config false;
      description
        "A single route entry in the IPv4 Adj-RIB-In post-policy table.";
      leaf prefix {
        type inet:ipv4-prefix;
        description
          "The IPv4 prefix corresponding to the route.";
      }
      uses bgp-adj-rib-attr-state;
      uses bgp-common-route-attributes;
      uses bgp-common-route-annotations-state;
      uses bgp-adj-rib-in-post-route-annotations-state;
      uses bgp-unknown-attr-top;
      uses rib-ext-route-annotations;
    }
  }

  grouping ipv6-adj-rib-common {
    description
      "Common structural grouping for each IPv6 Adj-RIB table.";
    container route {
      config false;
      description
        "A single route entry in the IPv6 Adj-RIB table.";
      leaf prefix {
        type inet:ipv6-prefix;
        description
          "The IPv6 prefix corresponding to the route.";
      }
      uses bgp-adj-rib-attr-state;
      uses bgp-common-route-attributes;
      uses bgp-common-route-annotations-state;
      uses bgp-unknown-attr-top;
      uses rib-ext-route-annotations;
    }
  }

  grouping ipv6-adj-rib-in-post {
    description
      "Common structural grouping for the IPv6 Adj-RIB-In
       post-policy table.";
    container route {
      config false;
      description
        "A single route entry in the IPv6 Adj-RIB-In post-policy table.";
      leaf prefix {
        type inet:ipv6-prefix;
        description
          "The IPv6 prefix corresponding to the route.";
      }
      uses bgp-adj-rib-attr-state;
      uses bgp-common-route-attributes;
      uses bgp-common-route-annotations-state;
      uses bgp-adj-rib-in-post-route-annotations-state;
      uses bgp-unknown-attr-top;
      uses rib-ext-route-annotations;
    }
  }
}
]]>
</sourcecode>
        </figure>

        <!-- ietf-bmp-bgp-rib-attributes YANG Submodule -->
        <figure anchor="ietf-bmp-bgp-rib-attributes-submodule"
          title="BMP YANG 'ietf-bmp-bgp-rib-attributes' submodule.">
          <sourcecode name="ietf-bmp-bgp-rib-attributes@2026-02-09.yang"
            type="yang" markers="true">
<![CDATA[
submodule ietf-bmp-bgp-rib-attributes {
  yang-version 1.1;
  belongs-to ietf-bmp-telemetry-message {
    prefix bmptm;
  }

  // import some basic types
  import iana-bgp-types {
    prefix bt;
    reference
      "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4).";
  }
  import iana-bgp-community-types {
    prefix bct;
    reference
      "RFC XXXX: YANG Model for Border Gateway Protocol (BGP-4).";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types.";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Types.";
  }

  // meta
  organization
    "IETF Draft";
  contact
    "Author:    Thomas Graf
                <mailto:thomas.graf@swisscom.com>
                Paolo Lucente
                <mailto:paolo@ntt.net>
                Leonardo Rodoni
                <mailto:leonardo.rodoni@swisscom.com>";

  description
    "This submodule contains common data definitions for BGP
     attributes for use in BGP RIB tables.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2026-02-09 {
    description
      "Initial version";
    reference
      "RFC XXXX";
  }

  grouping bgp-common-route-attributes {
    description
      "BGP path attributes and communities.";
    uses bgp-path-attributes;
    uses bgp-community-attr-state;
    uses ext-community-attributes;
    uses ipv6-ext-community-attributes;
    uses large-community-attributes;
  }

  grouping bgp-path-attributes {
    description
      "A grouping for all BGP Path Attribute parameters.";

    container attributes {
      description
        "A container for attribute parameters.";
      leaf origin {
        type bt:bgp-origin-attr-type;
        description
          "BGP attribute defining the origin of the path
           information.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
           5.1.1.";
      }
      container as-path {
        description
          "Enclosing container for the list of AS path segments.

           In the Adj-RIB-In or Adj-RIB-Out, this list should show
           the received or sent AS_PATH, respectively.  For
           example, if the local router is not 4-byte capable, this
           value should consist of 2-octet ASNs or the AS_TRANS
           (AS 23456) values received or sent in BGP updates.

           In the Loc-RIB, this list should reflect the effective
           AS path for the route, e.g., a 4-octet value if the
           local router is 4-octet capable.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4),
           RFC 6793: BGP Support for Four-octet AS Number Space
           RFC 5065: Autonomous System Confederations for BGP.";
        list segment {
          config false;
          uses bgp-as-path-segment;
          description
            "List of AS PATH segments";
        }
      }
      leaf next-hop {
        type inet:ip-address;
        description
          "BGP next hop attribute defining the IP address of the
           router that should be used as the next hop to the
           destination.  Used when the BGP routes' nexthop for that
           AFI/SAFI can be represented as an IPv4/IPv6 address.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
           5.1.3.";
      }
      leaf link-local-next-hop {
        type inet:ipv6-address;
        description
          "When both a global and a link-local next-hop are sent
           when following RFC 2545 procedures, this leaf contains
           the link-local next-hop.";
        reference
          "RFC 2545: Use of BGP-4 Multiprotocol Extensions for IPv6
           Inter-Domain Routing.";
      }
      leaf med {
        type uint32;
        description
          "BGP multi-exit discriminator attribute used in the BGP
           route selection process.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
           5.1.4.";
      }
      leaf local-pref {
        type uint32;
        description
          "BGP local preference attribute sent to internal peers to
           indicate the degree of preference for externally learned
           routes.  The route with the highest local preference
           value is preferred.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
           5.1.5.";
      }
      container as4-path {
        description
          "This is the path encoded with 4-octet
           AS numbers in the optional transitive AS4_PATH attribute.
           This value is populated with the received or sent
           attribute in Adj-RIB-In or Adj-RIB-Out, respectively.
           It should not be populated in Loc-RIB since the Loc-RIB
           is expected to store the effective AS-Path in the
           as-path leaf regardless of being 4-octet or 2-octet.";
        reference
          "RFC 6793: BGP Support for Four-octet AS Number Space";
        list segment {
          config false;
          uses bgp-as-path-segment;
          description
            "List of AS PATH segments";
        }
      }
      container aggregator {
        config false;
        description
          "BGP attribute indicating the prefix has been
           aggregated by the specified AS and router.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
           5.1.7,
           RFC 6793: BGP Support for Four-octet AS Number Space.";
        leaf as {
          type inet:as-number;
          description
            "AS number of the autonomous system that performed the
             aggregation.";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
             4.3, Path Attributes (g).";
        }
        leaf identifier {
          type yang:dotted-quad;
          description
            "BGP Identifier of the router that performed the
             aggregation.";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
             4.3, Path Attributes (g).";
        }
      }
      container aggregator4 {
        config false;
        description
          "BGP attribute indicating the prefix has been
           aggregated by the specified AS and router.
           This value is populated with the received or sent
           attribute in Adj-RIB-In or Adj-RIB-Out, respectively.
           It should not be populated in Loc-RIB since the Loc-RIB
           is expected to store the effective AGGREGATOR in the
           aggregator/as leaf regardless of being 4-octet or
           2-octet.";
        reference
          "RFC 6793: BGP Support for Four-octet AS Number Space.";
        leaf as4 {
          type inet:as-number;
          description
            "AS number of the autonomous system that performed the
             aggregation (4-octet representation).  This value is
             populated if an upstream router is not 4-octet capable.
             Its semantics are similar to the AS4_PATH optional
             transitive attribute";
          reference
            "RFC 6793: BGP Support for Four-octet AS Number Space,
             Section 3,
             RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
             4.3, Path Attributes (g).";
        }
        leaf identifier {
          type yang:dotted-quad;
          description
            "BGP Identifier of the router that performed the
             aggregation.";
          reference
            "RFC 6793: BGP Support for Four-octet AS Number Space,
             Section 3,
             RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
             4.3, Path Attributes (g).";
        }
      }
      leaf atomic-aggregate {
        type boolean;
        description
          "BGP attribute indicating that the prefix is an atomic
           aggregate; i.e., the peer selected is a less specific
           route without selecting a more specific route that is
           subsumed by it.";
        reference
          "RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section
           5.1.6.";
      }
      leaf originator-id {
        type yang:dotted-quad;
        description
          "BGP attribute that provides the id as an IPv4 address
           of the originator of the announcement.";
        reference
          "RFC 4456: BGP Route Reflection: An Alternative to Full
           Mesh Internal BGP (IBGP).";
      }
      leaf-list cluster-list {
        type yang:dotted-quad;
        description
          "Represents the reflection path that the route has
           passed.";
        reference
          "RFC 4456: BGP Route Reflection: An Alternative to Full
           Mesh Internal BGP (IBGP).";
      }
      leaf aigp-metric {
        type uint64;
        description
          "BGP path attribute representing the accumulated IGP
           metric for the path";
        reference
          "RFC 7311: The Accumulated IGP Metric Attribute for BGP.";
      }
    }
  }

  grouping bgp-as-path-segment {
    description
      "Data for representing BGP AS-PATH segment";

    leaf type {
      type identityref {
        base bt:as-path-segment-type;
      }
      description
        "The type of AS-PATH segment";
    }
    leaf-list member {
      type inet:as-number;
      description
        "List of the AS numbers in the AS-PATH segment";
    }
  }

  grouping bgp-unknown-attr-top {
    description
      "Unknown path attributes that are not expected to be shared
       across route entries, common to LOC-RIB and Adj-RIB";
    container unknown-attributes {
      description
        "Unknown path attributes that were received in the UPDATE
         message which contained the prefix.";

      list unknown-attribute {
        key "attr-type";
        description
          "This list contains received attributes that are
           unrecognized or unsupported by the local router. The list
           may be empty.";

        leaf optional {
          type boolean;
          description
            "Defines whether the attribute is optional (if
             set to true) or well-known (if set to false).
             Set in the high-order bit of the BGP attribute
             flags octet.";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4).";
        }

        leaf transitive {
          type boolean;
          description
            "Defines whether an optional attribute is transitive
             (if set to true) or non-transitive (if set to false).
             For well-known attributes, the transitive flag must be
             set to true. Set in the second high-order bit of the BGP
             attribute flags octet.";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4).";
        }

        leaf partial {
          type boolean;
          description
            "Defines whether the information contained in the
             optional transitive attribute is partial (if set to
             true) or complete (if set to false). For well-known
             attributes and for optional non-transitive attributes,
             the partial flag must be set to false. Set in the third
             high-order bit of the BGP attribute flags octet.";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4).";
        }

        leaf extended {
          type boolean;
          description
            "Defines whether the attribute length is one octet
             (if set to false) or two octets (if set to true). Set in
             the fourth high-order bit of the BGP attribute flags
             octet.";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4).";
        }

        leaf attr-type {
          type uint8;
          description
            "1-octet value encoding the attribute type code";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4).";
        }

        leaf attr-len {
          type uint16;
          description
            "One or two octet attribute length field indicating the
             length of the attribute data in octets.  If the Extended
             Length attribute flag is set, the length field is 2
             octets, otherwise it is 1 octet";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4).";
        }

        leaf attr-value {
          type binary {
            length "0..65535";
          }
          description
            "Raw attribute value, not including the attribute
             flags, type, or length.  The maximum length
             of the attribute value data is 2^16-1 per the max value
             of the attr-len field (2 octets).";
          reference
            "RFC 4271: A Border Gateway Protocol 4 (BGP-4).";
        }
      }
    }
  }

  grouping bgp-adj-rib-attr-state {
    description
      "Path attributes that are not expected to be shared across
       route entries, specific to Adj-RIB";
    leaf path-id {
      type uint32;
      description
        "When the BGP speaker supports advertisement of multiple
         paths for a prefix, the path identifier is used to
         uniquely identify a route based on the combination of the
         prefix and path id.  In the Adj-RIB-In, the path-id value is
         the value received in the update message.   In the Loc-RIB,
         if used, it should represent a locally generated path-id
         value for the corresponding route.  In Adj-RIB-Out, it
         should be the value sent to a neighbor when add-paths is
         used, i.e., the capability has been negotiated.";
      reference
        "RFC 7911: Advertisement of Multiple Paths in BGP.";
    }
  }

  grouping bgp-community-attr-state {
    description
      "Common definition of BGP community attributes";
    leaf-list community {
      type union {
        type bct:bgp-well-known-community-type;
        type bct:bgp-std-community-type;
      }
      description
        "List of standard or well-known BGP community
         attributes.";
    }
  }

  grouping ext-community-attributes {
    description
      "A grouping for all extended community parameters.";

    leaf-list ext-community {
      type bct:bgp-ext-community-type;
      description
        "List of BGP extended community attributes. The received
         extended community may be an explicitly modeled
         type or unknown, represented by an 8-octet value
         formatted according to RFC 4360.";
      reference
        "RFC 4360: BGP Extended Communities Attribute.";
    }

    leaf-list ext-community-raw {
      type string {
        // raw with 8 octets
        pattern
          'raw:([0-9A-F][0-9A-F]:){7}[0-9A-F][0-9A-F]';
      }
      description
        "ext-community type in raw format only.";
    }
  }

  grouping ipv6-ext-community-attributes {
    description
      "A grouping for all IPv6 extended community parameters.";

    leaf-list ipv6-ext-community {
      type bct:bgp-ipv6-ext-community-type;
      description
        "List of BGP IPv6 extended community attributes. The received
         IPv6 extended community may be an explicitly modeled
         type or unknown, represented by an 20-octet value
         formatted according to RFC 5701.";
      reference
        "RFC 5701: IPv6 Address Specific BGP Extended Community
         Attribute, Section 3.";
    }

    leaf-list ipv6-ext-community-raw {
      type string {
        // raw with 20 octets
        pattern
          'ipv6-raw:'
        + '([0-9A-Fa-f][0-9A-Fa-f]:){19}'
        + '[0-9A-Fa-f][0-9A-Fa-f]';
      }
      description
        "IPv6 ext-community type in raw format only.";
    }
  }

  grouping large-community-attributes {
    description
      "A grouping for all large community parameters.";

    leaf-list large-community {
      type bct:bgp-large-community-type;
      description
        "List of BGP large community attributes.";
      reference
        "RFC 8092: BGP Large Communities Attribute.";
    }
  }
}
]]>
</sourcecode>
        </figure>

      </section>
    </section>

    <section anchor="YANG_Message_Broker_BMP_Topic_Naming_Indexing">
      <name>YANG Message Broker BMP Indexing and Topic Naming</name>

      <t>To identify which network node produced which BMP data into
        which Message Broker Topic, Partition and Subject, <xref
          target="BMP_Message_Keys_Indexes_Solution">BMP Message Keys
        and Indexes</xref> are being introduced. These keys enable a
        deterministic distribution of BMP messages accross Topics and
        Partitions enabling applications to consume only the needed data
        from specific topics and partitions.</t>

      <t>In order to facilitate Message Broker Topic Compaction, a <xref
          target="YANG_Message_Broker_BMP_Topic-Naming_Solution"> BMP
        subscription type based topic naming scheme</xref> is defined.
        This segregates statistical (Value), State and State change BMP
        metrics and facilitates a BMP Message Broker Consumer to use the
        Topic wild card consumption method to select based on BMP
        subscription type.</t>

      <section anchor="BMP_Message_Keys_Indexes_Solution">
        <name>BMP Message Keys and Indexes</name>

        <t>A Message Broker uses a Message Key to index the Message and
          a value to carry the Message content. If no Message Key is
          defined then the Messages are distributed in a round robin
          fashion across partitions. If a Message Key is defined, then
          the value of the Message Key is being used as input for the
          Message Broker Producer hash function to distribute across
          Partitions. Therefore, Message Keys facilitate Message
          deterministic distribution.</t>

        <t>The Message Key not only used for Message indexing at the
          Message Producer but also at the Message Broker for topic
          compaction.</t>

        <t>For BMP, the network node hostname, what BMP Message Type the
          data reprents and apart from the initiation-message and
          termination-message the BMP index is used to generate the
          Message Key. The BMP index is calculated depending on BMP
          Message Type as following:</t>

        <ul>
          <li>peer-up-notification: "peer-distinguisher" and
            "peer-address".</li>

          <li>peer-down-notification: "peer-distinguisher" and
            "peer-address".</li>

          <li>statistics: "peer-distinguisher" and "peer-address".</li>

          <li>route-monitoring: "peer-distinguisher", "peer-address"
            afi-safi name, address family, name of the BGP RIB, "prefix"
            "origin" "path-id" route attributes and the index of the
            used attr-set.</li>

          <li>route-mirroring: "peer-distinguisher", "peer-address"
            afi-safi name, address family, name of the BGP RIB, "prefix"
            "origin" "path-id" route attributes, index of the used
            attr-set and information enumeration.</li>
        </ul>
      </section>

      <section anchor="YANG_Message_Broker_BMP_Topic-Naming_Solution">
        <name>Message Broker BMP Topic Naming</name>

        <t>BMP data can be subscribed for BMP session and BGP peering
          session state-changes, BGP peering statistics or BGP RIB
          states. as defined in <xref section="3.1" sectionFormat="of"
            target="RFC7854" />.</t>

        <t>Message Brokers topics are addressed with a unique name.
          Usually topics are named hierarchically similar to the DNS
          namespace where "." deliminates hierarchies.</t>

        <t>This document defines "statistics", "states" and
          "state-changes" in the topic name as the first part to denote
          the types of data. Followed by "bmp" to denote BMP data.
          Followed by the BGP RIB type and the BMP message type name.</t>

        <t>For example, if BMP route-monitoring is being subscribed to
          BGP Local-RIB, the Message Broker topic name would be as
          following. In the example the project name and environment
          (prod, dev, test etc.) is prefixed.</t>

        <figure anchor="bmp-topic-name-example"
          title="BMP BGP Local-RIB route-monitoring Topic Name Example">
          <sourcecode type="text"><![CDATA[
project.environment.state.bmp.local-rib.route-monitoring
]]></sourcecode>
        </figure>

        <section
          anchor="YANG_Message_Broker_Producer_BMP_Topic_Solution">
          <name>YANG Message Broker Producer</name>

          <t>For the Message Broker topic creation, the "message-type"
            contained data in "bmp-subscription" from
            "ietf-bmp-telemetry-message", YANG module defined in <xref
              target="ietf-bmp-telemetry-message-module" />,
            notifications MUST be used to derive wherever subscribed BMP
            data is "statistics" "states" or "state-changes".</t>
        </section>

        <section
          anchor="YANG_Message_Broker_Consumer_BMP_Topic_Solution">
          <name>YANG Message Broker Consumer</name>

          <t>The consumer has the ability to consume with a wildcard
            denoted with "*" in the topic name to consume from more than
            one topic.</t>

          <t>For example, if BMP states should be consumed and indexed
            in Time Series database or stream processor than below Topic
            Name could be used, and the BMP data could be ingested into
            tables according to topic names and indexed per Message Key.
            If Topic Compaction is enabled, only current state is
            consumed.</t>

          <figure anchor="bmp-topic-wildcard-name-example"
            title="BMP Wildcard Topic Name Example">
            <sourcecode type="text"><![CDATA[
project.environment.states.bmp.*
]]></sourcecode>
          </figure>

        </section>
      </section>
    </section>

    <section>
      <name>IANA Considerations</name>
      <t>This document registers the following two namespace URIs in the <xref
          target="RFC3688">IETF XML Registry</xref>:</t>

      <ul>
        <li>URI: urn:ietf:params:xml:ns:yang:ietf-bmp-telemetry-message</li>
        <li>Registrant Contact: The IESG.</li>
        <li>XML: N/A; the requested URI is an XML namespace.</li>
      </ul>

      <ul>
        <li>URI: urn:ietf:params:xml:ns:yang:ietf-bmp-bgp-rib-entry</li>
        <li>Registrant Contact: The IESG.</li>
        <li>XML: N/A; the requested URI is an XML namespace.</li>
      </ul>

      <ul>
        <li>URI: urn:ietf:params:xml:ns:yang:ietf-bmp-bgp-rib-tables</li>
        <li>Registrant Contact: The IESG.</li>
        <li>XML: N/A; the requested URI is an XML namespace.</li>
      </ul>

      <ul>
        <li>URI: urn:ietf:params:xml:ns:yang:ietf-bmp-bgp-rib-attributes</li>
        <li>Registrant Contact: The IESG.</li>
        <li>XML: N/A; the requested URI is an XML namespace.</li>
      </ul>

      <t>This document registers the following two YANG modules in the <xref
          target="RFC3688">YANG Module Names registry</xref>:</t>

      <ul>
        <li>Name: ietf-bmp-telemetry-message</li>
        <li>Namespace:
          urn:ietf:params:xml:ns:yang:ietf-bmp-telemetry-message</li>
        <li>Prefix: bmptm</li>
        <li>Reference: RFC XXXX</li>
      </ul>

      <t />

      <ul>
        <li>Name: ietf-bmp-bgp-rib-entry</li>
        <li>Namespace:
          urn:ietf:params:xml:ns:yang:ietf-bmp-bgp-rib-entry</li>
        <li>Prefix: bmptm</li>
        <li>Reference: RFC XXXX</li>
      </ul>

      <ul>
        <li>Name: ietf-bmp-bgp-rib-tables</li>
        <li>Namespace:
          urn:ietf:params:xml:ns:yang:ietf-bmp-bgp-rib-tables</li>
        <li>Prefix: bmptm</li>
        <li>Reference: RFC XXXX</li>
      </ul>

      <ul>
        <li>Name: ietf-bmp-bgp-rib-attributes</li>
        <li>Namespace:
          urn:ietf:params:xml:ns:yang:ietf-bmp-bgp-rib-attributes</li>
        <li>Prefix: bmptm</li>
        <li>Reference: RFC XXXX</li>
      </ul>

    </section>

    <section>
      <name>Security Considerations</name>
      <t>This section is modeled after the template described in <xref
          section="3.7" sectionFormat="of"
          target="I-D.ietf-netmod-rfc8407bis" />.</t>

      <t>The "ietf-bmp-telemetry-message" YANG module and
        "ietf-bmp-bgp-rib-entry", "ietf-bmp-bgp-rib-tables" and
        "ietf-bmp-bgp-rib-attributes" YANG submodules defines one
        combined data model that are designed to be accessed via
        YANG-based management protocols, such as NETCONF <xref
          target="RFC6141" /> and RESTCONF <xref target="RFC8040" />.
        These protocols have to use a secure transport layer (e.g., SSH <xref
          target="RFC4252" />, TLS <xref target="RFC8446" />, and QUIC <xref
          target="RFC9000" />) and have to use mutual authentication.</t>

      <t>The Network Configuration Access Control Model (NACM) <xref
          target="RFC8341" /> provides the means to restrict access for
        particular NETCONF or RESTCONF users to a preconfigured subset
        of all available NETCONF or RESTCONF protocol operations and
        content. </t>

      <t>There are a number of data nodes defined in this YANG module
        that are writable/creatable/deletable (i.e., "config true",
        which is the default). All writable data nodes are likely to be
        reasonably sensitive or vulnerable in some network environments.
        Write operations (e.g., edit-config) and delete operations to
        these data nodes without proper protection or authentication can
        have a negative effect on network operations. The following
        subtrees and data nodes have particular
        sensitivities/vulnerabilities:</t>

      <t>"There are no particularly sensitive writable data nodes."</t>

      <t>Some of the readable data nodes in this YANG module may be
        considered sensitive or vulnerable in some network environments.
        It is thus important to control read access (e.g., via get,
        get-config, or notification) to these data nodes. Specifically,
        the following subtrees and data nodes have particular
        sensitivities/ vulnerabilities:</t>

      <t>"There are no particularly sensitive readable data nodes."</t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6141.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7854.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8671.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9069.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-nmop-terminology.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-nmop-yang-message-broker-integration.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-nmop-message-broker-telemetry-message.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.netana-nmop-yang-message-broker-message-key.xml" />
      </references>

      <references>
        <name>Informative References</name>
        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-bgp-model.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-grow-bmp-yang.xml" />

        <xi:include
          href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netmod-rfc8407bis.xml" />

        <reference anchor="Deh22"
          target="https://www.oreilly.com/library/view/data-mesh/9781492092384/">
          <front>
            <title>Data Mesh</title>

            <author fullname="Zhamak Dehghani" initials="Z."
              surname="Dehghani" />

            <date month="March" year="2022" />
          </front>

          <seriesInfo name="ISBN" value="9781492092391" />

          <refcontent>O'Reilly Media</refcontent>
        </reference>

        <reference anchor="Kaf11" target="https://kafka.apache.org/">
          <front>
            <title>Apache Kafka</title>

            <author fullname="Neha Narkhede" initials="N."
              surname="Narkhede" />

            <date month="January" year="2011" />
          </front>

          <refcontent>Apache Software Foundation</refcontent>
        </reference>

        <reference anchor="Pul16" target="https://pulsar.apache.org/">
          <front>
            <title>Apache Pulsar</title>

            <author fullname="Sijie Guo" initials="S." surname="Guo" />

            <author fullname="Matteo  Merli" initials="M."
              surname="Merli" />

            <date month="January" year="2016" />
          </front>

          <refcontent>Apache Software Foundation</refcontent>
        </reference>
      </references>
    </references>

    <section anchor="Acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>Thanks to xxx for their comments and reviews.</t>
    </section>

    <section anchor="Contributors" numbered="false">
      <name>Contributors</name>

      <t>Many thanks goes to the authors of <xref
          target="I-D.ietf-idr-bgp-model" /> from which the BGP RIB
        submodules defined in <xref section="7.6" sectionFormat="of"
          target="I-D.ietf-idr-bgp-model" /> have been obtained and
        adjusted for BMP integration.</t>

      <author fullname="Mahesh Jethanandani" initials="M."
        surname="Jethanandani">
        <organization>Arrcus</organization>
        <address>
          <postal>
            <region>CA</region>
            <country>USA</country>
          </postal>
          <email>mjethanandani@gmail.com</email>
        </address>
      </author>

      <author fullname="Keyur Patel" initials="K." surname="Patel">
        <organization>Arrcus</organization>
        <address>
          <postal>
            <region>CA</region>
            <country>USA</country>
          </postal>
          <email>keyur@arrcus.com</email>
        </address>
      </author>

      <author fullname="Susan Hares" initials="S." surname="Hares">
        <organization>Huawei</organization>
        <address>
          <postal>
            <street>7453 Hickory Hill</street>
            <city>Saline</city>
            <region>MI</region>
            <code>48176</code>
            <country>USA</country>
          </postal>
          <email>shares@ndzh.com</email>
        </address>
      </author>

      <author fullname="Jeffrey Haas" initials="J." surname="Haas">
        <organization>Juniper Networks</organization>
        <address>
          <email>jhaas@pfrc.org</email>
        </address>
      </author>
    </section>

  </back>
</rfc>