<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
        <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <!ENTITY IANA_RM_CODE_4B_ASN "TBD1">
        <!ENTITY IANA_RM_CODE_PATH_ID "TBD2">
        <!ENTITY IANA_RM_CODE_MULTI_LABELS "TBD3">
        ]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="std" docName="draft-ietf-grow-bmp-tlv-ebit-01"
     ipr="trust200902" submissionType="IETF"
     updates="7854">

    <front>
        <title abbrev="BMP TLV EBIT">
	    Support for Enterprise-specific TLVs in the BGP Monitoring Protocol
	</title>

        <author fullname="Paolo Lucente" initials="P" surname="Lucente">
            <organization>NTT</organization>
            <address>
                <postal>
                    <street>Veemweg 23</street>
                    <city>Barneveld</city>
                    <code>3771</code>
                    <region>MT</region>
                    <country>NL</country>
                </postal>
                <email>paolo@ntt.net</email>
            </address>
        </author>
	<author fullname="Yunan Gu" initials="Y" surname="Gu">
            <organization>Huawei</organization>
            <address>
                <postal>
                    <street>Huawei Bld., No.156 Beiqing Rd.</street>
                    <city>Beijing</city>
                    <code>100095</code>
                    <region></region>
                    <country>China</country>
                </postal>
                <email>guyunan@huawei.com</email>
            </address>
	</author>

        <date year="2022"/>

        <area>General</area>

        <workgroup>Global Routing Operations</workgroup>
        <keyword>BGP</keyword>
        <keyword>BMP</keyword>
        <keyword>tlv</keyword>
        <keyword>pen</keyword>

        <abstract>
            <t>
		Message types defined by the BGP Monitoring Protocol (BMP) do provision
		for data in TLV - Type, Length, Value - format, either in the shape of
		a TLV message body, ie. Route Mirroring and Stats Reports, or optional
		TLVs at the end of a BMP message, ie. Peer Up and Peer Down. However
		the space for Type value is unique and governed by IANA. To allow the usage
		of vendor-specific TLVs, a mechanism to define per-vendor Type values is
		required. In this document we introduce an Enterprise Bit, or E-bit, for
		such purpose.
            </t>
        </abstract>
    </front>

    <middle>
        <section title="Introduction" anchor="Introduction">
            <t>
		The BGP Monitoring Protocol (BMP) is defined in <xref target="RFC7854">RFC 7854</xref>.
		Support for TLV data is extended by <xref target="I-D.ietf-grow-bmp-tlv">TLV
		support for BMP Route Monitoring and Peer Down Messages</xref>. 
	   </t>
           <t>
		Vendors need the ability to define proprietary Information Elements for
		various reasons such as delivering a pre-standard product. This aligns
		with <xref target="RFC8126">Section 4.1 of</xref>.
	   </t>
	   <t>
		Also for code point assignment to be eligible, an IETF document needs to
		be adopted at a Working Group and in a stable condition. In this context
		E-bit helps during early development phases where inter-operability among
		vendors is tested and shipped to network operators for testing. This aligns
		with <xref target="RFC8126">Section 4.2 of</xref>.
	   </t>
	   <t>
		This document re-defines the format of IANA-registered TLVs in a
		backward compatible manner with respect to previous documents and
		existing IANA allocations; it also defines the format for newly
		introduced enterprise-specific TLVs. 
	   </t>
	   <t>
		The concept of an E-bit, or Enterprise Bit, is not new. For example,
		such mechanism is defined in <xref target="RFC7011">Section 3.2 of</xref>
		for a very similar purpose.
           </t>
        </section>

        <section title="Terminology">
            <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">RFC 2119</xref>
		<xref target="RFC8174">RFC 8174</xref> when, and only when, they
		appear in all capitals, as shown here.
            </t>
        </section>

	<section title="TLV encoding">

	<section title="IANA-registered TLV encoding">
	    <t>
		Existing TLV encodings are defined in <xref target="RFC7854">Section 4.4 of</xref>
		(Information TLVs), <xref target="RFC7854">Section 4.7 of</xref> (Route Mirroring
                TLVs), <xref target="RFC7854">Section 4.8 of</xref> (Stats Reports
		TLVs), <xref target="I-D.ietf-grow-bmp-tlv">draft-ietf-grow-bmp-tlv</xref> and
		<xref target="I-D.ietf-grow-bmp-peer-up">draft-ietf-grow-bmp-peer-up</xref> and
		are updated as follows:
	    </t>
	    <t>
		<list style="symbols">
		    <t>
			1 bit to flag an enterprise-specific TLV, set to zero. The
			TLV Type value must have been defined in <xref target="IANA-BMP">IANA-BMP</xref>  
		    </t>
		    <t>
			15 bits of TLV Type,
		    </t>
		    <t>
			2 octets of TLV Value length,
		    </t>
		    <t>
			0 or more octets of TLV Value.
		    </t>
		</list>
	    </t>

	    <figure anchor="BMP-TLV-public-header" align="center">
	    	<artwork align="center">
	    	    <![CDATA[
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |E|             Type            |     Length (2 octets)         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        Value (variable)                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	    	    ]]>
	    	</artwork>
	    </figure>
	</section>

	<section title="Enterprise-specific TLV encoding">
	    <t>
		Enterprise-specific TLV encoding is defined as follows:
	    </t>
	    <t>
		<list style="symbols">
		    <t>
			1 bit to flag an enterprise-specific TLV, set to one
		    </t>
		    <t>
			15 bits of TLV Type,
		    </t>
		    <t>
			2 octets of TLV length. Comprising length of IANA PEN plus TLV value,
		    </t>
		    <t>
			4 octets of IANA Private Enterprise Number <xref target="IANA-PEN">IANA-PEN</xref>
		    </t>
		    <t>
			0 or more octets of TLV Value.
		    </t>
		</list>
	    </t>

	    <figure anchor="BMP-TLV-enterprise-header" align="center">
	    	<artwork align="center">
	    	    <![CDATA[
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |E|             Type            |     Length (2 octets)         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        Enterprise number                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        Value (variable)                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	    	    ]]>
	    	</artwork>
	    </figure>
	    <t>
		In case of indexed TLVs, as defined by
		<xref target="I-D.ietf-grow-bmp-tlv">TLV support for BMP Route
                Monitoring and Peer Down Messages</xref>, the index value follows
		the Enterprise number. 
	    </t>

	    <figure anchor="BMP-TLV-enterprise-index-header" align="center">
	    	<artwork align="center">
	    	    <![CDATA[
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |E|             Type            |     Length (2 octets)         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        Enterprise number                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |        Index (2 octets)       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        Value (variable)                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	    	    ]]>
	    	</artwork>
	    </figure>
	</section>

	<section title="TLV encoding remarks">
	    <t>
		The TLV encoding specified in this document applies to all existing
		BMP Message Types and their namespaces defined in <xref target="RFC7854">RFC 7854</xref>,
		<xref target="I-D.ietf-grow-bmp-tlv">TLV support for BMP Route
		Monitoring and Peer Down Messages</xref> and
		<xref target="I-D.ietf-grow-bmp-peer-up">BMP Peer Up Message
		Namespace</xref>. While the proposed encoding is not per-se
		backward compatible, there is no existing IANA-allocated Type
		value that makes use of the most significant bit (which is
		being used in this document to define the E-bit).
	    </t>
	    <t>
		Future BMP Message Types MUST make use of the TLV encoding defined
		in this document.
	    </t>
	    <t>
		This document refers to <xref target="I-D.ietf-grow-bmp-tlv">TLV
		support for BMP Route Monitoring and Peer Down Messages</xref> for
		any recommendations regarding the use of TLVs (ie. repetitions,
		ordering, etc.).
	    </t>
	</section>

	</section>

        <section title="Security Considerations">
            <t>
                This document does not add any additional security considerations.
            </t>
        </section>

        <section title="Operational Considerations">
	    <t>
		It is recommended that vendors making use of the Enterprise Bit
		extension have a well-defined internal registry for privately
		assigned code points that is also exposed to the public.
	    </t>
        </section>

        <section title="IANA Considerations">
            <t>
		The TLV Type values used by BMP are managed by IANA as are the
		Private Enterprise Numbers used by enterprise-specific Type
		values <xref target="IANA-PEN">IANA-PEN</xref>. This document
		makes no changes to these registries.
            </t>
        </section>

    </middle>

    <back>

        <references title="Normative References">
		&RFC2119;
		&RFC8174;

		<?rfc include="reference.RFC.8126.xml"?>
		<?rfc include="reference.RFC.7854.xml"?>
		<?rfc include='reference.I-D.ietf-grow-bmp-tlv'?>
		<?rfc include='reference.I-D.ietf-grow-bmp-peer-up'?>
        </references>

        <references title="Informative References">
		<?rfc include="reference.RFC.7011.xml"?>
		<reference anchor="IANA-PEN" target="http://www.iana.org/assignments/enterprise-numbers/">
			<front>
				<title>
					Private Enterprise Numbers
				</title>
				<author>
					<organization>
						IANA
					</organization>
				</author>
				<date year="1982" />
			</front>
		</reference>
		<reference anchor="IANA-BMP" target="https://www.iana.org/assignments/bmp-parameters/bmp-parameters.xhtml">
			<front>
				<title>
					BGP Monitoring Protocol (BMP) Parameters
				</title>
				<author>
					<organization>
						IANA
					</organization>
				</author>
				<date year="2016" />
			</front>
		</reference>
        </references>

        <section anchor="Acknowledgements" title="Acknowledgements" numbered="no">
            <t>
		The authors would like to thank Thomas Graf, Jeff Haas, Pierre Francois
		and Camilo Cardona for their valuable input.
            </t>
        </section>

    </back>
</rfc>
