<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?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 xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-abraitis-bgp-version-capability-09" ipr="trust200902" tocInclude="true" tocDepth="4" submissionType="IETF" consensus="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.8 -->
  <front>
    <title abbrev="Software Version Optional Parameter">Software Version OPEN Optional Parameter Type for BGP</title>
    <seriesInfo name="Internet-Draft" value="draft-abraitis-bgp-version-capability-09"/>
    <author fullname="Donatas Abraitis" surname="Abraitis">
      <organization>Hostinger</organization>
      <address>
        <postal>
          <street>Jonavos g. 60C</street>
          <city>Kaunas</city>
          <region/>
          <code>44192</code>
          <country>LT</country>
        </postal>
        <phone>+370 614 18958</phone>
        <email>donatas.abraitis@hostinger.com</email>
      </address>
    </author>
    <date year="2023"/>
    <area>General</area>
    <keyword>template</keyword>
    <abstract>
      <t>
        In this document, we introduce a new BGP OPEN Optional Parameter Type
        that allows the advertisement of a BGP speaker's routing daemon version.
      </t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t>
        In this document, we introduce a new BGP OPEN Optional Parameter Type
        that allows the advertisement of a BGP speaker's routing daemon version.
      </t>
      <t>
        In modern data center designs, we tend to have conventional routers participating
        in the routing process. And the fleet of routers has different versions of routing daemon.
        This means that knowing which versions of the routing daemons are running the various
        routers in the network can be a crucial factor in quickly identifying the root cause of
        any protocol or network problems.
      </t>
      <t>
        This new Optional Parameter Type is an optional advertisement. Implementations
        are not required to advertise the version nor to process received
        advertisements.
      </t>
      <t>
        Information about the version of the routing daemon could also be exchanged in protocols
        such as LLDP and CDP. However, in containerized environments, it is very hard and not
        recommended to exchange this information between background processes. Therefore, and to
        help minimize operational costs, it is helpful to exchange the routing daemon information
        between BGP peers directly.
      </t>
    </section>
    <section anchor="simple_list">
      <name>Specification of Requirements</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>
    <section>
      <name>Software Version BGP OPEN Optional Parameter Type</name>
      <t>
        The Optional Parameters in the BGP OPEN message are defined in the
        base BGP specification <xref target="RFC4271"/>. This document defines
        a new BGP OPEN Optional Parameter Type, the Software Version, with Type
        TBD and value is up to 255 octets. The value field is encoded in UTF-8
        <xref target="RFC3629"/>. It is unstructured data and can be formatted
        in any way that the implementor decides.
      </t>
      <t>
        The inclusion of the Software Version Optional Parameters is OPTIONAL. If an
        implementation supports the inclusion of this parameter, the implementation
        MUST include a configuration switch to enable or disable its use, and that
        switch MUST be off by default.
      </t>
      <t>
        The Software Version BGP OPEN Optional Parameter is intended for environments
        where more visibility is needed for troubleshooting purposes. It is NOT
        RECOMMENDED for use outside a single Autonomous System, or a set of Autonomous
        Systems under a common administration.
      </t>
      <t>
        An implementation that does not recognize or support the Software Version
         Optional Parameter but receives one must ignore it.
      </t>
    </section>
    <section>
      <name>Operation</name>
      <t>
        The Software Version BGP OPEN Optional Parameter SHOULD only be used for
        displaying the version of a BGP speaker's router daemon to make troubleshooting
        easier.
      </t>
      <t>
        Consider a group of routers each with a number of upstream nodes, and
        suppose that each router has a different operating system and
        different routing daemon at a different version installed.  Assuming
        that a specific feature is not working or that there is a bug which
        has not been fixed in a particular version of the code, knowledge of
        the routing daemon versions would allow an operator to quickly
        identify the pattern of which versions are affected.
      </t>
      <t>
        Enabling (i.e., turning on) this parameter requires bouncing all
        existing BGP sessions and the feature MUST be explicitly configured
        before an implementation advertizes the Software Version Optional Parameter.
      </t>
      <section>
        <name>Example Usage</name>
        <t>
          Below is an example from the <xref target="FRRouting"/> implementation showing both the
          received and advertised Software Version:
        </t>
        <figure anchor="frr_failed">
          <artwork align="left"><![CDATA[
  :~# vtysh -c 'show ip bgp summary failed'
  ...
  Neighbor EstdCnt DropCnt ResetTime Reason
  ens192         3       3  00:00:35 Waiting for peer OPEN (n/a)
  ens224         3       3  00:01:12 Waiting for NHT (FRRouting 7.2)
  eth0           3       3  00:00:14 Neighbor deleted (FRRouting 7.3)
  ...
              ]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>
        The BGP OPEN Optional Parameter Types registry is a standalone registry.
        IANA is requested to assign a capability number from the First Come First
        Served range for the Software Version BGP OPEN Optional Parameter
        in this document as follows:
      </t>
      <table anchor="table_ex">
        <name>Software Version BGP OPEN Optional Parameter</name>
        <thead>
          <tr>
            <th align="center">Value</th>
            <th align="center">Description</th>
            <th align="center">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="center">TBD</td>
            <td align="center">Software Version</td>
            <td align="center">[This.I-D]</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>
        The Software Version BGP OPEN Optional Parameter should be treated as sensitive
        information: it could be easier for an attacker to exploit the system if
        they know the specific software version and manufacturer of a BGP speaker. This
        information could be gathered by inspecting BGP OPEN messages that carry
        the Software Version BGP OPEN Optional Parameter defined in this document.
        Furthermore, this knowledge may facilitate a number of social-engineering attacks.
      </t>
      <t>
        Modifying the information advertised by a router might lead to attacks
        including bogus software upgrades and also might mask the causes of
        faults in the network.
      </t>
      <t>
        Users of this mechanism should be aware that unless a transport that
        provides integrity is used for the BGP session in question, the Software Version
        parameter can be forged. Unless a transport that provides
        confidentiality is used, the Software Version parameter could be snooped by an
        attacker. These issues are common to any BGP message but may be of
        greater interest in the context of this extension as explained above.
        Refer to the related considerations in <xref target="RFC4271"/> and <xref target="RFC4272"/>.
      </t>
      <t>
        Users of this mechanism should consider applying data minimization
        practices as outlined in Section 6.1 of <xref target="RFC6973"/>, as appropriate within
        the deployment context.
      </t>
      <t>
        Sensitive information leaks can be minimized by using the <xref target="RFC5082"/>
        mechanism or firewalls to filter out TCP 179 port from untrusted networks.
        This optional parameter can be disabled per neighbor, thus the sensitive information
        can't be disclosed to untrusted neighbors.
      </t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <author>
              <organization>RFC Publisher</organization>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>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="RFC3629" target="https://www.rfc-editor.org/info/rfc3629" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC5082" target="https://www.rfc-editor.org/info/rfc5082" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5082.xml">
          <front>
            <title>The Generalized TTL Security Mechanism (GTSM)</title>
            <author fullname="V. Gill" initials="V." surname="Gill"/>
            <author fullname="J. Heasley" initials="J." surname="Heasley"/>
            <author fullname="D. Meyer" initials="D." surname="Meyer"/>
            <author fullname="P. Savola" initials="P." role="editor" surname="Savola"/>
            <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
            <date month="October" year="2007"/>
            <abstract>
              <t>The use of a packet's Time to Live (TTL) (IPv4) or Hop Limit (IPv6) to verify whether the packet was originated by an adjacent node on a connected link has been used in many recent protocols.  This document generalizes this technique.  This document obsoletes Experimental RFC 3682. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5082"/>
          <seriesInfo name="DOI" value="10.17487/RFC5082"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>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>
        <reference anchor="RFC4272" target="https://www.rfc-editor.org/info/rfc4272" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4272.xml">
          <front>
            <title>BGP Security Vulnerabilities Analysis</title>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>Border Gateway Protocol 4 (BGP-4), along with a host of other infrastructure protocols designed before the Internet environment became perilous, was originally designed with little consideration for protection of the information it carries. There are no mechanisms internal to BGP that protect against attacks that modify, delete, forge, or replay data, any of which has the potential to disrupt overall network routing behavior.</t>
              <t>This document discusses some of the security issues with BGP routing data dissemination. This document does not discuss security issues with forwarding of packets. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4272"/>
          <seriesInfo name="DOI" value="10.17487/RFC4272"/>
        </reference>
        <reference anchor="RFC4271" target="https://www.rfc-editor.org/info/rfc4271" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4271.xml">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>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>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>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="RFC6973" target="https://www.rfc-editor.org/info/rfc6973" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6973.xml">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications.  It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices.  It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="FRRouting" target="https://github.com/ton31337/frr/commit/4c566878fd1a7df9f8c84ee03f419c0b00ae444b">
          <front>
            <title>FRRouting - BGP Software Version Capability</title>
            <author initials="D.A." surname="Abraitis" fullname="Donatas Abraitis">
              <organization abbrev="Hostinger">Hostinger</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
</rfc>
