<?xml version="1.0" encoding="UTF-8"?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="bcp"
     ipr="trust200902"
     docName="draft-spaghetti-grow-bcp-ext-comms-01"
     consensus="true"
     submissionType="IETF">

    <front>

        <title abbrev="Avoid Ext Comms">Recommendation to avoid use of BGP Extended Communities at Internet Exchange Route Servers</title>

        <author fullname="Job Snijders" initials="J." surname="Snijders">
            <organization abbrev="Fastly">Fastly, Inc.</organization>
            <address>
                <postal>
                    <city>Amsterdam</city>
                    <country>NL</country>
                </postal>
                <email>job@fastly.com</email>
            </address>
        </author>

        <author fullname="Stavros Konstantaras" initials="S." surname="Konstantaras">
            <organization abbrev="AMS-IX">Amsterdam Internet Exchange</organization>
            <address>
                <postal>
                    <city>Amsterdam</city>
                    <country>NL</country>
                </postal>
                <email>stavros.konstantaras@ams-ix.net</email>
            </address>
        </author>
         
        <author fullname="Mo Shivji" initials="M." surname="Shivji">
            <organization abbrev="LINX">London Internet Exchange Ltd</organization>
            <address>
                <postal>
                    <city>London</city>
                    <country>UK</country>
                </postal>
                <email>moyaze@linx.net</email>
            </address>
        </author>


        <date />

        <area>Routing</area>
        <workgroup>Global Routing Operations</workgroup>
        <keyword>BGP</keyword>
        <keyword>RPKI</keyword>
        <keyword>EBGP</keyword>
        <keyword>sessions</keyword>

        <abstract>
            <t>
                This document outlines a recommendation to the Internet operational community to avoid the use of BGP Extended Communities at Internet Exchange Point (IXP) Route Servers.
                It includes guidance for both the Internet Service Provider side peering with Route Servers and IXPs operating Route Servers.
                This recommendation aims to help the global Internet routing system's performance and help protect Route Server participants against misconfigurations.
            </t>
        </abstract>
    </front>

    <middle>
        <section anchor="Introduction" title="Introduction">
            <t>
                This document outlines a recommendation to the Internet operational community to avoid the use of BGP Extended Communities <xref target="RFC4360"/> at Internet Exchange Point (IXP) Route Servers <xref target="RFC7947"/>, <xref target="RFC7948"/>.
                It includes guidance for both the Internet Service Provider side peering with Route Servers and IXPs operating Route Servers.
                This recomendation aims to help the global Internet routing system's performance and help protect Route Server participants against misconfigurations.
            </t>
        </section>

        <section title="Requirements Language">
            <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 title="Background">
            <t>
                The main use-case for Extended Communities are as Route Targets within VPN <xref target="RFC4364"/> deployments, but historically Extended Communities also have been used as an operational utility to signal requests to IXP Route Servers such as functionality to reduce propagation scope or request AS_PATH prepending.
            </t>
            <t>
                Use of Extended Communities arose from a lack of support to fit 4-octet Autonomous System Numbers (ASNs) <xref target="RFC4893"/> in Classic BGP communities <xref target="RFC1997"/>, thus operators improvised a method that could allow BGP signaling from IXP participants with 4-octet ASN.
                The 6-octet space for the Global and Local administrator part of the BGP Extended Community provides sufficient space for a single 4-octet ASN.
                However, the 6-octet space is not sufficient enough should a 4-octet ASN participant of an IXP want to send a signal to a 4-octet ASN Route Server or to another 4-octet ASN participant.
                Moreover, the flexibility to insert a 4-octet ASN either in the Global or the Local Administrator part, proved to bring extra complexity both in the BGP implementations and in the route propagation functions that are being triggered through BGP Extended Communities.
                Although, this method was widely considered to be an acceptable workaround for a period of time, a more robust and future proof solution was needed that could overcome the aforementioned obstacles.
             </t>
             <t>
                BGP Large communities <xref target="RFC8092"/> addressed the operational requirements for working with 4-octet ASNs in a variety of scenarios.
                With a total space of 12 octets divided into 3 separate fields, signalling between 2-octet ASNs and 4-octet ASNs, or 4-octet ASNs and 4-octet ASNs, making the use of BGP Extended Communities redundant.
                Since the introduction of BGP Large communities in 2017 - by now - virtually all BGP implementations have adopted this standard, making this feature usable in all public Internet deployments.
             </t>
             <t>
                At the moment of writing this recommendation, there are still IP Network and IXP operators that support BGP Extended Communities for IXP Route Server signaling purposes.
                However, supporting three flavors of BGP Communities (Classic, Large, and Extended) contribute to increased memory consumption, increased complexity in Routing Policies, and reduced stability of the Internet ecosystem as BGP speakers need to send a BGP UPDATE message every time any type of BGP Community is added, removed, or modified.
                As each and every BGP UPDATE message propagated and received requires CPU cycles for processing, any efforts that minimize the number of BGP UPDATE messages are advantageous for the routing system.
                The authors of this document posit that Extended Communities are superfluous in context of the existence of Large Communities.
            </t>
        </section>
        <section title="Recommendation">
            <t>
                Operators that tag or match on route announcements on the public Internet with Extended Communities for 4-octet ASNs are RECOMMENDED to replace these configurations with equivalent functionality implemented using Large Communities <xref target="RFC8092"/>.
            </t>
            <t>
                Operators of Internet Exchange Route Servers are RECOMMENDED to scrub Extended Communities in both inbound and outbound directions.
            </t>
        </section>

        <section anchor="Acknowledgments" title="Acknowledgments">
          <t>
            TBD
          </t>
        </section>

        <section anchor="Security" title="Security Considerations">
            <t>
                There are no security considerations accompanying this document.
            </t>
        </section>

        <section title="IANA Considerations">
            <t>
                This document has no actions for IANA.
            </t>
        </section>

    </middle>

    <back>

        <references title="Normative References">
            <?rfc include="reference.RFC.2119.xml"?>
            <?rfc include="reference.RFC.8174.xml"?>
        </references>
        <references title="Informative References">
            <?rfc include="reference.RFC.1997.xml"?>
            <?rfc include="reference.RFC.4360.xml"?>
            <?rfc include="reference.RFC.4364.xml"?>
            <?rfc include="reference.RFC.4893.xml"?>
            <?rfc include="reference.RFC.7947.xml"?>
            <?rfc include="reference.RFC.7948.xml"?>
            <?rfc include="reference.RFC.8092.xml"?>
<!--
            <?rfc include="reference.RFC.7153.xml"?>
            <?rfc include="reference.RFC.8195.xml"?>
-->
        </references>
    </back>
</rfc>
