<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-grow-bmp-local-rib-12" indexInclude="true" ipr="trust200902" number="9069" prepTime="2022-02-15T22:17:50" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="4" tocInclude="true" updates="7854" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-grow-bmp-local-rib-12" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9069" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="BMP Loc-RIB">Support for Local RIB in the BGP Monitoring Protocol (BMP)</title>
    <seriesInfo name="RFC" value="9069" stream="IETF"/>
    <author fullname="Tim Evens" initials="T" surname="Evens">
      <organization showOnFrontPage="true">Cisco Systems</organization>
      <address>
        <postal>
          <street>2901 Third Avenue, Suite 600</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98121</code>
          <country>United States of America</country>
        </postal>
        <email>tievens@cisco.com</email>
      </address>
    </author>
    <author fullname="Serpil Bayraktar" initials="S" surname="Bayraktar">
      <organization showOnFrontPage="true">Menlo Security</organization>
      <address>
        <postal>
          <street>800 W El Camino Real, Suite 250</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94040</code>
          <country>United States of America</country>
        </postal>
        <email>serpil.bayraktar@menlosecurity.com</email>
      </address>
    </author>
    <author fullname="Manish Bhardwaj" initials="M" surname="Bhardwaj">
      <organization showOnFrontPage="true">Cisco Systems</organization>
      <address>
        <postal>
          <street>3700 Cisco Way</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States of America</country>
        </postal>
        <email>manbhard@cisco.com</email>
      </address>
    </author>
    <author fullname="Paolo Lucente" initials="P" surname="Lucente">
      <organization showOnFrontPage="true">NTT Communications</organization>
      <address>
        <postal>
          <street>Siriusdreef 70-72</street>
          <city>Hoofddorp</city>
          <code>2132</code>
          <country>NL</country>
        </postal>
        <email>paolo@ntt.net</email>
      </address>
    </author>
    <date month="02" year="2022"/>
    <area>OPS</area>
    <workgroup>Global Routing Operations</workgroup>
    <keyword>BGP</keyword>
    <keyword>BMP</keyword>
    <keyword>local-rib</keyword>
    <keyword>loc-rib</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
                The BGP Monitoring Protocol (BMP) defines access to local Routing
                Information Bases (RIBs). This document updates BMP (RFC 7854) by
                adding access to the Local Routing Information Base (Loc-RIB), as
                defined in RFC 4271. The Loc-RIB contains the routes that have been
		selected by the local BGP speaker's Decision Process. 
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9069" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2022 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-alternative-method-to-monit">Alternative Method to Monitor Loc-RIB</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-definitions">Definitions</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-per-peer-header">Per-Peer Header</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peer-type">Peer Type</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peer-flags">Peer Flags</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-loc-rib-monitoring">Loc-RIB Monitoring</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-per-peer-header-2">Per-Peer Header</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peer-up-notification">Peer Up Notification</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.2.2">
                  <li pn="section-toc.1-1.5.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.1.1"><xref derivedContent="5.2.1" format="counter" sectionFormat="of" target="section-5.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peer-up-information">Peer Up Information</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peer-down-notification">Peer Down Notification</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-route-monitoring">Route Monitoring</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.4.2">
                  <li pn="section-toc.1-1.5.2.4.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.4.2.1.1"><xref derivedContent="5.4.1" format="counter" sectionFormat="of" target="section-5.4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-asn-encoding">ASN Encoding</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.4.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.4.2.2.1"><xref derivedContent="5.4.2" format="counter" sectionFormat="of" target="section-5.4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-granularity">Granularity</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.5.2.5">
                <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-route-mirroring">Route Mirroring</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.6">
                <t indent="0" pn="section-toc.1-1.5.2.6.1"><xref derivedContent="5.6" format="counter" sectionFormat="of" target="section-5.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-statistics-report">Statistics Report</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-other-considerations">Other Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-loc-rib-implementation">Loc-RIB Implementation</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.1.2">
                  <li pn="section-toc.1-1.6.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.1.2.1.1"><xref derivedContent="6.1.1" format="counter" sectionFormat="of" target="section-6.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multiple-loc-rib-peers">Multiple Loc-RIB Peers</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.6.2.1.2.2.1"><xref derivedContent="6.1.2" format="counter" sectionFormat="of" target="section-6.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-filtering-loc-rib-to-bmp-re">Filtering Loc-RIB to BMP Receivers</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.1.2.3">
                    <t indent="0" pn="section-toc.1-1.6.2.1.2.3.1"><xref derivedContent="6.1.3" format="counter" sectionFormat="of" target="section-6.1.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-changes-to-existing-bmp-ses">Changes to Existing BMP Sessions</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bmp-peer-type">BMP Peer Type</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bmp-loc-rib-instance-peer-f">BMP Loc-RIB Instance Peer Flags</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peer-up-information-tlv">Peer Up Information TLV</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.4">
                <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent="8.4" format="counter" sectionFormat="of" target="section-8.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peer-down-reason-code">Peer Down Reason Code</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.5">
                <t indent="0" pn="section-toc.1-1.8.2.5.1"><xref derivedContent="8.5" format="counter" sectionFormat="of" target="section-8.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-deprecated-entries">Deprecated Entries</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
                This document defines a mechanism to monitor the BGP Loc-RIB state
                of remote BGP instances without the need to establish BGP peering
                sessions.

                BMP <xref target="RFC7854" format="default" sectionFormat="of" derivedContent="RFC7854"/> does not define a method to send
                the BGP instance Loc-RIB. 

                It does define locally originated routes in <xref target="RFC7854" sectionFormat="of" section="8.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-8.2" derivedContent="RFC7854"/>,
                but these routes are defined as the routes that originated into BGP (e.g., 
                <xref target="RFC4271" sectionFormat="of" section="9.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-9.4" derivedContent="RFC4271"/>). Loc-RIB
                includes all selected received routes from BGP peers in addition to locally
                originated routes.                 
                
      </t>
      <t indent="0" pn="section-1-2">
                <xref target="FigAdjRibInLocRib" format="default" sectionFormat="of" derivedContent="Figure 1"/> shows the flow of received routes from one or more BGP peers
                into the Loc-RIB.
      </t>
      <figure anchor="FigAdjRibInLocRib" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-bgp-peering-adj-ribs-in-int">BGP Peering Adj-RIBs-In into Loc-RIB</name>
        <artwork align="center" name="" type="" alt="" pn="section-1-3.1">
    +------------------+      +------------------+
    | Peer-A           |      | Peer-B           |
/-- |                  | ---- |                  | --\
|   | Adj-RIB-In (Pre) |      | Adj-RIB-In (Pre) |   |
|   +------------------+      +------------------+   |
|                 |                         |        |
| Filters/Policy -|         Filters/Policy -|        |
|                 V                         V        |
|   +------------------+      +------------------+   |
|   | Adj-RIB-In (Post)|      | Adj-RIB-In (Post)|   |
|   +------------------+      +------------------+   |
|                |                          |        |
|      Selected -|                Selected -|        |
|                V                          V        |
|    +-----------------------------------------+     |
|    |                 Loc-RIB                 |     |
|    +-----------------------------------------+     |
|                                                    |
| ROUTER/BGP Instance                                |
\----------------------------------------------------/
</artwork>
      </figure>
      <t indent="0" pn="section-1-4">
                The following are some use cases for Loc-RIB access:
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-5">
        <li pn="section-1-5.1">
          <t indent="0" pn="section-1-5.1.1">
                        The Adj-RIB-In for a given peer post-policy may contain hundreds of
                        thousands of routes, with only a handful of routes selected and installed
                        in the Loc-RIB after best-path selection.
                        Some monitoring applications, such as those that need only to
                        correlate flow records to Loc-RIB entries, only need to collect
                        and monitor the routes that are actually selected and used.

          </t>
          <t indent="0" pn="section-1-5.1.2">

                        Requiring the applications to collect all Adj-RIB-In post-policy
                        data forces the applications to receive a potentially
                        large unwanted data set and to perform the BGP decision process
                        selection, which includes having access to the interior gateway
                        protocol (IGP) next-hop metrics. While it is possible to obtain
                        the IGP topology information using BGP - Link State (BGP-LS),
                        it requires the application to implement Shortest Path First (SPF)
                        and possibly Constrained Shortest Path First (CSPF) based on
                        additional policies. This is overly complex for such a
                        simple application that only needs to have access to the Loc-RIB.
          </t>
        </li>
        <li pn="section-1-5.2">
                        It is common to see frequent changes over many BGP peers, but
                        those changes do not always result in the router's Loc-RIB
                        changing. The change in the Loc-RIB can have a direct impact
                        on the forwarding state. It can greatly reduce the time to
                        troubleshoot and resolve issues if operators have the history of
                        Loc-RIB changes. For example, a performance issue might have
                        been seen for only a duration of 5 minutes. Post-facto
                        troubleshooting this issue without Loc-RIB history hides any
                        decision-based routing changes that might have happened during
                        those 5 minutes.
        </li>
        <li pn="section-1-5.3">
                        Operators may wish to validate the impact of policies applied
                        to the Adj-RIB-In by analyzing the final decision made by the
                        router when installing into the Loc-RIB. For example, in order
                        to validate if multipath prefixes are installed as expected
                        for all advertising peers, the Adj-RIB-In post-policy and Loc-RIB
                        need to be compared. This is only possible if the Loc-RIB
                        is available. Monitoring the Adj-RIB-In for this router from
                        another router to derive the Loc-RIB is likely to not show the same
                        installed prefixes. For example, the received Adj-RIB-In will
                        be different if ADD-PATH <xref target="RFC7911" format="default" sectionFormat="of" derivedContent="RFC7911"/>
                        is not enabled or if the maximum supported number of equal paths is different
                        between Loc-RIB and advertised routes.
      </li>
      </ul>
      <t indent="0" pn="section-1-6">
                This document adds Loc-RIB to the BGP Monitoring Protocol and
                replaces <xref target="RFC7854" sectionFormat="of" section="8.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-8.2" derivedContent="RFC7854"/> ("Locally Originated Routes").
      </t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-alternative-method-to-monit">Alternative Method to Monitor Loc-RIB</name>
        <t indent="0" pn="section-1.1-1">
                    Loc-RIB is used to build Adj-RIB-Out when advertising routes to a
                    peer. It is therefore possible to derive the Loc-RIB of a router by
                    monitoring the Adj-RIB-In pre-policy from another router.  
                    This becomes overly complex and error prone when considering the number
                    of peers being monitored per router.

        </t>
        <t indent="0" pn="section-1.1-2">
        </t>
        <figure anchor="FigCurLocRibMon" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-alternative-method-to-monito">Alternative Method to Monitor Loc-RIB</name>
          <artwork align="center" name="" type="" alt="" pn="section-1.1-3.1">
/------------------------------------------------------\
|  ROUTER1 BGP Instance                                |
|                                                      |
|     +--------------------------------------------+   |
|     |                 Loc-RIB                    |   |
|     +--------------------------------------------+   |
|                    |                    |            |
|    +------------------+     +------------------+     |
|    |   Peer-ROUTER2   |     |   Peer-ROUTER3   |     |
|    | Adj-RIB-Out (Pre)|     | Adj-RIB-Out (Pre)|     |
|    +------------------+     +------------------+     |
|    Filters/Policy -|    Filters/Policy -|            |
|                    V                    V            |
|   +-------------------+     +-------------------+    |
|   | Adj-RIB-Out (Post)|     | Adj-RIB-Out (Post)|    |
|   +-------------------+     +-------------------+    |
|              |                          |            |
\------------- | ------------------------ | -----------/
          BGP  |                     BGP  |
          Peer |                     Peer |
   +------------------+          +------------------+
   |   Peer-ROUTER1   |          |   Peer-ROUTER1   |
/--|                  |--\    /--|                  | --\
|  | Adj-RIB-In (Pre) |  |    |  | Adj-RIB-In (Pre) |   |
|  +------------------+  |    |  +------------------+   |
|                        |    |                         |
| ROUTER2/BGP Instance   |    | ROUTER3/BGP Instance    |
\------------------------/    \-------------------------/
            |                              |
            v                              v
    ROUTER2 BMP Feed               ROUTER3 BMP Feed
</artwork>
        </figure>
        <t indent="0" pn="section-1.1-4">
                    The setup needed to monitor the Loc-RIB of a router requires another
                    router with a peering session to the target router that is to be
                    monitored. As shown in <xref target="FigCurLocRibMon" format="default" sectionFormat="of" derivedContent="Figure 2"/>, the
                    target router Loc-RIB is advertised via the Adj-RIB-Out
                    to the BMP router over a standard BGP peering session. The BMP
                    router then forwards the Adj-RIB-In pre-policy to the BMP receiver.
        </t>
        <t indent="0" pn="section-1.1-5">
                    A BMP lacking access to Loc-RIB introduces the need for additional
		    resources:
        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-6">
          <li pn="section-1.1-6.1">
                    Requires at least two routers when only one router was to be
                    monitored.
          </li>
          <li pn="section-1.1-6.2">
                    Requires additional BGP peering to collect the received updates
                    when peering may not have even been required in the first
                    place. For example, virtual routing and forwarding (VRF) tables 
                    with no peers, redistributed BGP-LS with no peers, and
                    segment routing egress peer engineering where no
                    peers have link-state address family enabled are all
                    situations with no preexisting BGP peers.
          </li>
        </ul>
        <t indent="0" pn="section-1.1-7">
                    Many complexities are introduced when using a received Adj-RIB-In
                    to infer a router Loc-RIB:

        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-8">
          <li pn="section-1.1-8.1">
                    Adj-RIB-Out received as Adj-RIB-In from another router may have
                    a policy applied that generates aggregates, suppresses
                    more specific prefixes, manipulates attributes, or filters routes. Not
                    only does this invalidate the Loc-RIB view, it adds complexity
                    when multiple BMP routers may have peering sessions to the same
                    router. The BMP receiver user is left with the error-prone task of
                    identifying which peering session is the best representative of
                    the Loc-RIB.
          </li>
          <li pn="section-1.1-8.2">
                    BGP peering is designed to work between administrative domains
                    and therefore does not need to include internal system-level
                    information of each peering router (e.g., the system name or
                    version information). In order to derive the Loc-RIB of a router,
                    the router name or other system information is needed. The BMP
                    receiver and user are forced to do some type of correlation using
                    whatever information is available in the peering session (e.g., peering
                    addresses, autonomous system numbers, and BGP identifiers).
                    This leads to error-prone correlations.
          </li>
          <li pn="section-1.1-8.3">
                    Correlating BGP identifiers (BGP-ID) and session addresses to a 
                    router requires additional data, such as router inventory. This
                    additional data provides the BMP receiver the ability to map and
                    correlate the BGP-IDs and/or session addresses but requires the
                    BMP receiver to somehow obtain this data outside of the BMP. How this
                    data is obtained and the accuracy of the data directly affect the
                    integrity of the correlation.
          </li>
        </ul>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">
		The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
		"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
		described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119">RFC 2119</xref>
        <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174">RFC 8174</xref> when, and only when, they
		appear in all capitals, as shown here.
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-definitions">Definitions</name>
      <dl indent="3" newline="false" spacing="normal" pn="section-3-1">
        <dt pn="section-3-1.1">BGP Instance:</dt>
        <dd pn="section-3-1.2">Refers to an instance of BGP-4 <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>,
			and considerations in <xref target="RFC7854" sectionFormat="of" section="8.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-8.1" derivedContent="RFC7854"/> apply to it.</dd>
        <dt pn="section-3-1.3">Adj-RIB-In:</dt>
        <dd pn="section-3-1.4">As defined in <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>, "The Adj-RIBs-In contains
            unprocessed routing information that has been advertised to the
            local BGP speaker by its peers." This is also referred to as the
            "pre-policy Adj-RIB-In" in this document.
        </dd>
        <dt pn="section-3-1.5">
            Adj-RIB-Out:</dt>
        <dd pn="section-3-1.6">As defined in <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>, "The Adj-RIBs-Out contains
            the routes for advertisement to specific peers by means of the
            local speaker's UPDATE messages."
        </dd>
        <dt pn="section-3-1.7">

            Loc-RIB:</dt>
        <dd pn="section-3-1.8">As defined in <xref target="RFC4271" sectionFormat="of" section="1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-1.1" derivedContent="RFC4271"/>, "The Loc-RIB
			contains the routes that have been selected by the local BGP speaker's Decision
            Process." Note that the Loc-RIB state as monitored through BMP might
            also contain routes imported from other routing protocols such as an IGP
            or local static routes.
        </dd>
        <dt pn="section-3-1.9">
            Pre-Policy Adj-RIB-Out:</dt>
        <dd pn="section-3-1.10">The result before applying the outbound
            policy to an Adj-RIB-Out. This normally represents a similar view of the
            Loc-RIB but may contain additional routes based on BGP peering configuration.
        </dd>
        <dt pn="section-3-1.11">
            Post-Policy Adj-RIB-Out:</dt>
        <dd pn="section-3-1.12"> The result of applying the outbound policy to
		an Adj-RIB-Out. This <bcp14>MUST</bcp14> be what is actually sent to the peer.
	    </dd>
      </dl>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-per-peer-header">Per-Peer Header</name>
      <section anchor="PeerType" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-peer-type">Peer Type</name>
        <t indent="0" pn="section-4.1-1">
		A new peer type is defined for Loc-RIB to indicate that it
		represents the router Loc-RIB, which may have a route distinguisher (RD).
		<xref target="RFC7854" sectionFormat="of" section="4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-4.2" derivedContent="RFC7854"/> defines a Local Instance
			    Peer type, which is for the case of non-RD peers that have an instance
		identifier.
        </t>
        <t indent="0" pn="section-4.1-2">
		This document defines the following new peer type:
        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-3">
          <li pn="section-4.1-3.1">Peer Type = 3: Loc-RIB Instance Peer
              </li>
        </ul>
      </section>
      <section anchor="PeerFlags" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-peer-flags">Peer Flags</name>
        <t indent="0" pn="section-4.2-1">
		If locally sourced routes are communicated
		      using BMP, they <bcp14>MUST</bcp14> be conveyed using the Loc-RIB Instance Peer Type.
        </t>
        <t indent="0" pn="section-4.2-2">
		The per-peer header flags for the Loc-RIB Instance Peer Type are defined
		as follows:
        </t>
        <artwork align="center" name="" type="" alt="" pn="section-4.2-3">
     0 1 2 3 4 5 6 7
    +-+-+-+-+-+-+-+-+
    |F| | | | | | | |
    +-+-+-+-+-+-+-+-+
    </artwork>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-4">
          <li pn="section-4.2-4.1">
            <t indent="0" pn="section-4.2-4.1.1">
		    The F flag indicates that the Loc-RIB is filtered. This <bcp14>MUST</bcp14> be
		    set when a filter is applied to Loc-RIB routes sent to the BMP
		    collector. 

            </t>
            <t indent="0" pn="section-4.2-4.1.2">

		    The unused bits are reserved for future use. They <bcp14>MUST</bcp14> be
		    transmitted as 0, and their values <bcp14>MUST</bcp14> be ignored on receipt.
            </t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-loc-rib-monitoring">Loc-RIB Monitoring</name>
      <t indent="0" pn="section-5-1">
		    The Loc-RIB contains all routes selected by the BGP Decision Process as
		    described in <xref target="RFC4271" sectionFormat="of" section="9.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-9.1" derivedContent="RFC4271"/>. These
		    routes include those learned from BGP peers via its Adj-RIBs-In post-policy, as
		    well as routes learned by other means as per <xref target="RFC4271" sectionFormat="of" section="9.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-9.4" derivedContent="RFC4271"/>.

		Examples of these include redistribution of routes from other protocols into BGP
		or those otherwise locally originated (i.e., aggregate routes).
      </t>
      <t indent="0" pn="section-5-2">
    
    As described in <xref target="FilterLocRib" format="default" sectionFormat="of" derivedContent="Section 6.1.2"/>, a subset of Loc-RIB routes
    <bcp14>MAY</bcp14> be sent to a BMP collector by setting the F flag. 

      </t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-per-peer-header-2">Per-Peer Header</name>
        <t indent="0" pn="section-5.1-1">
            All peer messages that include a per-peer header as defined in 
            <xref target="RFC7854" sectionFormat="of" section="4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-4.2" derivedContent="RFC7854"/>
          <bcp14>MUST</bcp14> use the following values:

        </t>
        <dl indent="3" newline="false" spacing="normal" pn="section-5.1-2">
          <dt pn="section-5.1-2.1">
                Peer Type:</dt>
          <dd pn="section-5.1-2.2">Set to 3 to indicate Loc-RIB Instance Peer.
          </dd>
          <dt pn="section-5.1-2.3">
                Peer Distinguisher:</dt>
          <dd pn="section-5.1-2.4">Zero-filled if the Loc-RIB represents the
                global instance.  Otherwise, set to the route distinguisher or
                unique locally defined value of the particular instance to which the Loc-RIB belongs.
          </dd>
          <dt pn="section-5.1-2.5">
		Peer Address:</dt>
          <dd pn="section-5.1-2.6"> Zero-filled.  The remote peer address is not applicable.
		The V flag is not applicable with the Loc-RIB Instance Peer Type
		considering addresses are zero-filled.
          </dd>
          <dt pn="section-5.1-2.7">
                Peer Autonomous System (AS):</dt>
          <dd pn="section-5.1-2.8">Set to the primary router BGP autonomous system number (ASN).
          </dd>
          <dt pn="section-5.1-2.9">
                Peer BGP ID:</dt>
          <dd pn="section-5.1-2.10"> Set the ID to the router-id of the VRF instance if VRF is used; otherwise, set to the global instance router-id.
          </dd>
          <dt pn="section-5.1-2.11">
		Timestamp:</dt>
          <dd pn="section-5.1-2.12">The time when the encapsulated routes were installed in
		the Loc-RIB, expressed in seconds and microseconds since midnight
		(zero hour), January 1, 1970 (UTC).  If zero, the time is unavailable.
		Precision of the timestamp is implementation dependent.
          </dd>
        </dl>
      </section>
      <section anchor="PeerUpNotify" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-peer-up-notification">Peer Up Notification</name>
        <t indent="0" pn="section-5.2-1">
                Peer Up notifications follow <xref target="RFC7854" sectionFormat="of" section="4.10" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-4.10" derivedContent="RFC7854"/> with the
                following clarifications:

        </t>
        <dl indent="3" newline="false" spacing="normal" pn="section-5.2-2">
          <dt pn="section-5.2-2.1">
                Local Address:</dt>
          <dd pn="section-5.2-2.2"> Zero-filled; the local address is not applicable.
          </dd>
          <dt pn="section-5.2-2.3">
                Local Port:</dt>
          <dd pn="section-5.2-2.4"> Set to 0; the local port is not applicable.
          </dd>
          <dt pn="section-5.2-2.5">
                Remote Port:</dt>
          <dd pn="section-5.2-2.6"> Set to 0; the remote port is not applicable.
          </dd>
          <dt pn="section-5.2-2.7">
                Sent OPEN Message:</dt>
          <dd pn="section-5.2-2.8"> This is a fabricated BGP OPEN message.
                Capabilities <bcp14>MUST</bcp14> include the 4-octet ASN and all necessary
                capabilities to represent the Loc-RIB Route Monitoring messages.
                Only include capabilities if they will be used for Loc-RIB
                monitoring messages.  For example, if ADD-PATH is enabled for
                IPv6 and Loc-RIB contains additional paths, the ADD-PATH
                capability should be included for IPv6.  In the case of ADD-PATH,
                the capability intent of advertise, receive, or both can be ignored
           since the presence of the capability indicates enough that additional paths will be used for IPv6.
          </dd>
          <dt pn="section-5.2-2.9">
                Received OPEN Message:</dt>
          <dd pn="section-5.2-2.10"> Repeat of the same sent OPEN message.  The
                duplication allows the BMP receiver to parse the expected
                received OPEN message as defined in <xref target="RFC7854" sectionFormat="of" section="4.10" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-4.10" derivedContent="RFC7854"/>.
          </dd>
        </dl>
        <section anchor="PeerUpInfoTlv" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.1">
          <name slugifiedName="name-peer-up-information">Peer Up Information</name>
          <t indent="0" pn="section-5.2.1-1">
                The following Peer Up Information TLV type is added:
          </t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.2.1-2">
            <li pn="section-5.2.1-2.1">
              <t indent="0" pn="section-5.2.1-2.1.1">Type = 3: VRF/Table Name.  The Information field contains a
                UTF-8 string whose value <bcp14>MUST</bcp14> be equal to the value of the VRF or
                table name (e.g., RD instance name) being conveyed.  The string size
                <bcp14>MUST</bcp14> be within the range of 1 to 255 bytes.
              </t>
              <t indent="0" pn="section-5.2.1-2.1.2">
                The VRF/Table Name TLV is optionally included to support implementations
                that may not have defined a name.  If a name is configured, it <bcp14>MUST</bcp14>
                be included.  The
                default value of "global" <bcp14>MUST</bcp14> be used for the default Loc-RIB
                instance with a zero-filled distinguisher. 
                If the TLV is included, then it <bcp14>MUST</bcp14> also be included in the Peer 
		Down notification.
              </t>
            </li>
          </ul>
          <t indent="0" pn="section-5.2.1-3">The Information field contains a
                UTF-8 string whose value <bcp14>MUST</bcp14> be equal to the value of the VRF or
                table name (e.g., RD instance name) being conveyed.  The string size
                <bcp14>MUST</bcp14> be within the range of 1 to 255 bytes.
          </t>
          <t indent="0" pn="section-5.2.1-4">
                The VRF/Table Name TLV is optionally included to support implementations
                that may not have defined a name.  If a name is configured, it <bcp14>MUST</bcp14>
                be included.  The
                default value of "global" <bcp14>MUST</bcp14> be used for the default Loc-RIB
                instance with a zero-filled distinguisher.

                If the TLV is included, then it <bcp14>MUST</bcp14> also be included in the Peer Down notification.
          </t>
          <t indent="0" pn="section-5.2.1-5">
			Multiple TLVs of the same type can be repeated as part of the same message,
			for example, to convey a filtered view of a VRF. A BMP receiver should append
			multiple TLVs of the same type to a set in order to support alternate or
			additional names for the same peer. If multiple strings are included, their
			ordering <bcp14>MUST</bcp14> be preserved when they are reported.
          </t>
        </section>
      </section>
      <section anchor="PeerDownReasonCode" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-peer-down-notification">Peer Down Notification</name>
        <t indent="0" pn="section-5.3-1">
            The Peer Down notification <bcp14>MUST</bcp14> use reason code 6. Following the reason is data
		    in TLV format. The following Peer Down Information TLV type is defined:

        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.3-2">
          <li pn="section-5.3-2.1">
                Type = 3: VRF/Table Name.  The Information field contains a
                UTF-8 string whose value <bcp14>MUST</bcp14> be equal to the value of the VRF or
                table name (e.g., RD instance name) being conveyed.  The string size
                <bcp14>MUST</bcp14> be within the range of 1 to 255 bytes. The VRF/Table Name
				informational TLV <bcp14>MUST</bcp14> be included if it was in the Peer Up.
      	  </li>
        </ul>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.4">
        <name slugifiedName="name-route-monitoring">Route Monitoring</name>
        <t indent="0" pn="section-5.4-1">
            Route Monitoring messages are used for initial synchronization of
            the Loc-RIB.  They are also used to convey incremental Loc-RIB
            changes.

        </t>
        <t indent="0" pn="section-5.4-2">
            As described in <xref target="RFC7854" sectionFormat="of" section="4.6" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-4.6" derivedContent="RFC7854"/>, "Following the
		    common BMP header and per-peer header is a BGP Update PDU."
        </t>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-5.4.1">
          <name slugifiedName="name-asn-encoding">ASN Encoding</name>
          <t indent="0" pn="section-5.4.1-1">
            Loc-RIB Route Monitoring messages <bcp14>MUST</bcp14> use a 4-byte ASN encoding as indicated
            in the <xref target="PeerUpNotify" format="default" sectionFormat="of" derivedContent="Section 5.2">Peer Up sent OPEN message</xref> capability.
          </t>
        </section>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-5.4.2">
          <name slugifiedName="name-granularity">Granularity</name>
          <t indent="0" pn="section-5.4.2-1">
            State compression and throttling <bcp14>SHOULD</bcp14> be used by a BMP sender
            to reduce the amount of Route Monitoring messages that are
            transmitted to BMP receivers.  With state compression, only the
            final resultant updates are sent.
          </t>
          <t indent="0" pn="section-5.4.2-2">
            For example, prefix 192.0.2.0/24 is updated in the Loc-RIB 5 times
            within 1 second. State compression of BMP Route Monitoring messages
            results in only the final change being transmitted. The other 4
            changes are suppressed because they fall within the compression
            interval. If no compression was being used, all 5 updates would
            have been transmitted.

          </t>
          <t indent="0" pn="section-5.4.2-3">
            A BMP receiver should expect that the granularity of Loc-RIB Route Monitoring can
            vary depending on the BMP sender implementation.
          </t>
        </section>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.5">
        <name slugifiedName="name-route-mirroring">Route Mirroring</name>
        <t indent="0" pn="section-5.5-1">
            <xref target="RFC7854" sectionFormat="of" section="4.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-4.7" derivedContent="RFC7854"/> 
            defines Route Mirroring for verbatim  duplication of messages received. This
            is not applicable to Loc-RIB as PDUs are originated by the router.
            Any received Route Mirroring messages <bcp14>SHOULD</bcp14> be ignored.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.6">
        <name slugifiedName="name-statistics-report">Statistics Report</name>
        <t indent="0" pn="section-5.6-1">
            Not all Stat Types are relevant to Loc-RIB.  The Stat Types that
            are relevant are listed below:
        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.6-2">
          <li pn="section-5.6-2.1">
            Stat Type = 8: (64-bit Gauge) Number of routes in Loc-RIB.
          </li>
          <li pn="section-5.6-2.2">
            Stat Type = 10: Number of routes in per-AFI/SAFI Loc-RIB.  The
       value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.
          </li>
        </ul>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-other-considerations">Other Considerations</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-loc-rib-implementation">Loc-RIB Implementation</name>
        <t indent="0" pn="section-6.1-1">
            There are several methods for a BGP speaker to implement Loc-RIB efficiently.
            In all methods, the implementation emulates a peer with Peer Up and Down
            messages to convey capabilities as well as Route Monitor messages to
            convey Loc-RIB.  In this sense, the peer that conveys the Loc-RIB is
            a locally emulated peer.
        </t>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1.1">
          <name slugifiedName="name-multiple-loc-rib-peers">Multiple Loc-RIB Peers</name>
          <t indent="0" pn="section-6.1.1-1">
            There <bcp14>MUST</bcp14> be at least one emulated peer for each Loc-RIB instance,
            such as with VRFs. The BMP receiver identifies the Loc-RIB by the peer
            header distinguisher and BGP ID.  The BMP receiver uses the VRF/Table
            Name from the Peer Up information to associate a name with the Loc-RIB.
          </t>
          <t indent="0" pn="section-6.1.1-2">
            In some implementations, it might be required to have more than one
            emulated peer for Loc-RIB to convey different address families for
            the same Loc-RIB.  In this case, the peer distinguisher and BGP ID
            should be the same since they represent the same Loc-RIB instance.
            Each emulated peer instance <bcp14>MUST</bcp14> send a Peer Up with the OPEN message
            indicating the address family capabilities.  A BMP receiver <bcp14>MUST</bcp14>
            process these capabilities to know which peer belongs to which
            address family.            
          </t>
        </section>
        <section anchor="FilterLocRib" numbered="true" toc="include" removeInRFC="false" pn="section-6.1.2">
          <name slugifiedName="name-filtering-loc-rib-to-bmp-re">Filtering Loc-RIB to BMP Receivers</name>
          <t indent="0" pn="section-6.1.2-1">
            There may be use cases where BMP receivers should only receive
            specific routes from Loc-RIB. For example, IPv4 unicast routes may
            include internal BGP (IBGP), external BGP (EBGP), and IGP, but only
            routes from EBGP should be sent
            to the BMP receiver.  Alternatively, it may be that only IBGP and
            EBGP should be sent and IGP redistributed routes excluded.  In these cases where the Loc-RIB is filtered, the F flag
            is set to 1 to indicate to the BMP receiver that the Loc-RIB is
            filtered. If multiple filters are associated with the same Loc-RIB,
			a table name <bcp14>MUST</bcp14> be used in order to allow a BMP receiver to make
			the right associations.
          </t>
        </section>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1.3">
          <name slugifiedName="name-changes-to-existing-bmp-ses">Changes to Existing BMP Sessions</name>
          <t indent="0" pn="section-6.1.3-1">
			In case of any change that results in the alteration of behavior of
			an existing BMP session, i.e., changes to filtering and table names, the
			session <bcp14>MUST</bcp14> be bounced with a Peer Down / Peer Up sequence.
          </t>
        </section>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-7-1">
        The same considerations as in <xref target="RFC7854" sectionFormat="of" section="11" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-11" derivedContent="RFC7854"/> apply to this
        document. Implementations of this protocol <bcp14>SHOULD</bcp14> require that sessions only be established with
        authorized and trusted monitoring devices. It is also believed that this document does
        not introduce any additional security considerations.
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">
        IANA has assigned new parameters
        to the <eref target="https://www.iana.org/assignments/bmp-parameters/" brackets="none">
        "BGP Monitoring Protocol (BMP) Parameters" registry</eref>.
      </t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-bmp-peer-type">BMP Peer Type</name>
        <t indent="0" pn="section-8.1-1">IANA has registered the following new peer type (<xref target="PeerType" format="default" sectionFormat="of" derivedContent="Section 4.1"/>):

        </t>
        <table anchor="t1" align="center" pn="table-1">
          <name slugifiedName="name-bmp-peer-type-2">BMP Peer Type</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Peer Type</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">3</td>
              <td align="left" colspan="1" rowspan="1">Loc-RIB Instance Peer</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-bmp-loc-rib-instance-peer-f">BMP Loc-RIB Instance Peer Flags</name>
        <t indent="0" pn="section-8.2-1">
            IANA has renamed "BMP Peer Flags" to
            "BMP Peer Flags for Peer Types 0 through 2" and created a new registry
            named "BMP Peer Flags for Loc-RIB Instance Peer Type 3".</t>
        <t indent="0" pn="section-8.2-2">This document defines peer flags that are specific to the
           Loc-RIB Instance Peer Type.  IANA has registered the following in
           the "BMP Peer Flags for Loc-RIB Instance Peer Type 3" registry:</t>
        <table anchor="t2" align="center" pn="table-2">
          <name slugifiedName="name-loc-rib-instance-peer-type">Loc-RIB Instance Peer Type</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Flag</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">F flag</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-8.2-4">As noted in <xref target="PeerFlags" format="default" sectionFormat="of" derivedContent="Section 4.2"/>, the F flag indicates that the Loc-RIB is filtered.  This indicates that the Loc-RIB does not represent the complete routing table.</t>
        <t indent="0" pn="section-8.2-5">
         Flags 1 through 7 are unassigned.  The registration procedure for the
        registry is Standards Action.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.3">
        <name slugifiedName="name-peer-up-information-tlv">Peer Up Information TLV</name>
        <t indent="0" pn="section-8.3-1">
            IANA has renamed the "BMP Initiation Message TLVs" registry to "BMP Initiation and Peer Up Information TLVs".
            <xref target="RFC7854" sectionFormat="of" section="4.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7854#section-4.4" derivedContent="RFC7854"/> indicates that 
            both Initiation and Peer Up share the same information TLVs.
        
            This document defines the following new BMP Peer Up Information
            TLV type (<xref target="PeerUpInfoTlv" format="default" sectionFormat="of" derivedContent="Section 5.2.1"/>):</t>
        <table anchor="t3" align="center" pn="table-3">
          <name slugifiedName="name-bmp-peer-up-information-tlv">BMP Peer Up Information TLV Type</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Type</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">3</td>
              <td align="left" colspan="1" rowspan="1">VRF/Table Name</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-8.3-3">The Information field contains a UTF-8 string whose value
            <bcp14>MUST</bcp14> be equal to the value of the VRF or table name
            (e.g., RD instance name) being conveyed.  The string size
            <bcp14>MUST</bcp14> be within the range of 1 to 255 bytes.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.4">
        <name slugifiedName="name-peer-down-reason-code">Peer Down Reason Code</name>
        <t indent="0" pn="section-8.4-1">
            IANA has registered the following new BMP Peer Down reason code
            (<xref target="PeerDownReasonCode" format="default" sectionFormat="of" derivedContent="Section 5.3"/>):</t>
        <table anchor="t4" align="center" pn="table-4">
          <name slugifiedName="name-bmp-peer-down-reason-code">BMP Peer Down Reason Code</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Type</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">6</td>
              <td align="left" colspan="1" rowspan="1">Local system closed, TLV data follows</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.5">
        <name slugifiedName="name-deprecated-entries">Deprecated Entries</name>
        <t indent="0" pn="section-8.5-1">Per this document, IANA has marked the F Flag entry in the "BMP
        Peer Flags for Peer Types 0 through 2" registry as
        "deprecated".</t>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4271" target="https://www.rfc-editor.org/info/rfc4271" quoteTitle="true" derivedAnchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Li" fullname="T. Li" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Hares" fullname="S. Hares" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="January"/>
            <abstract>
              <t indent="0">This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t indent="0">The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems.  This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t indent="0">BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR).  These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP.  BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t indent="0">This document obsoletes RFC 1771.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC7854" target="https://www.rfc-editor.org/info/rfc7854" quoteTitle="true" derivedAnchor="RFC7854">
          <front>
            <title>BGP Monitoring Protocol (BMP)</title>
            <author initials="J." surname="Scudder" fullname="J. Scudder" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Fernando" fullname="R. Fernando">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Stuart" fullname="S. Stuart">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="June"/>
            <abstract>
              <t indent="0">This document defines the BGP Monitoring Protocol (BMP), which can be used to monitor BGP sessions.  BMP is intended to provide a convenient interface for obtaining route views.  Prior to the introduction of BMP, screen scraping was the most commonly used approach to obtaining such views.  The design goals are to keep BMP simple, useful, easily implemented, and minimally service affecting. BMP is not suitable for use as a routing protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7854"/>
          <seriesInfo name="DOI" value="10.17487/RFC7854"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC7911" target="https://www.rfc-editor.org/info/rfc7911" quoteTitle="true" derivedAnchor="RFC7911">
          <front>
            <title>Advertisement of Multiple Paths in BGP</title>
            <author initials="D." surname="Walton" fullname="D. Walton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Retana" fullname="A. Retana">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Chen" fullname="E. Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Scudder" fullname="J. Scudder">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="July"/>
            <abstract>
              <t indent="0">This document defines a BGP extension that allows the advertisement of multiple paths for the same address prefix without the new paths implicitly replacing any previous ones.  The essence of the extension is that each path is identified by a Path Identifier in addition to the address prefix.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7911"/>
          <seriesInfo name="DOI" value="10.17487/RFC7911"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">
        The authors would like to thank <contact fullname="John Scudder"/>, <contact fullname="Jeff Haas"/>, and <contact fullname="Mukul Srivastava"/>
		for their valuable input.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Tim Evens" initials="T" surname="Evens">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <postal>
            <street>2901 Third Avenue, Suite 600</street>
            <city>Seattle</city>
            <region>WA</region>
            <code>98121</code>
            <country>United States of America</country>
          </postal>
          <email>tievens@cisco.com</email>
        </address>
      </author>
      <author fullname="Serpil Bayraktar" initials="S" surname="Bayraktar">
        <organization showOnFrontPage="true">Menlo Security</organization>
        <address>
          <postal>
            <street>800 W El Camino Real, Suite 250</street>
            <city>Mountain View</city>
            <region>CA</region>
            <code>94040</code>
            <country>United States of America</country>
          </postal>
          <email>serpil.bayraktar@menlosecurity.com</email>
        </address>
      </author>
      <author fullname="Manish Bhardwaj" initials="M" surname="Bhardwaj">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <postal>
            <street>3700 Cisco Way</street>
            <city>San Jose</city>
            <region>CA</region>
            <code>95134</code>
            <country>United States of America</country>
          </postal>
          <email>manbhard@cisco.com</email>
        </address>
      </author>
      <author fullname="Paolo Lucente" initials="P" surname="Lucente">
        <organization showOnFrontPage="true">NTT Communications</organization>
        <address>
          <postal>
            <street>Siriusdreef 70-72</street>
            <city>Hoofddorp</city>
            <code>2132</code>
            <country>NL</country>
          </postal>
          <email>paolo@ntt.net</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
