<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"
[
<!ENTITY RFC0826 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.0826.xml">
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2385 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2385.xml">
<!ENTITY RFC4272 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4272.xml">
<!ENTITY RFC4301 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml">
<!ENTITY RFC4861 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4861.xml">
<!ENTITY RFC5082 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5082.xml">
<!ENTITY RFC5880 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5880.xml">
<!ENTITY RFC5925 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5925.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8177 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8177.xml">
<!ENTITY LLDP SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.acee-idr-lldp-peer-discovery.xml">
<!ENTITY BGP-OSPF SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.acee-ospf-bgp-rr.xml">
<!ENTITY L3DL SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lsvr-l3dl.xml">
<!ENTITY L3DL-ULPC SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lsvr-l3dl-ulpc.xml">
<!ENTITY AUTO-SESSION SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.raszuk-idr-bgp-auto-session-setup.xml">
<!ENTITY RASZUK-AUTODISCOVERY SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.raszuk-idr-bgp-auto-discovery.xml">
<!ENTITY XU-AUTODISCOVERY SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.xu-idr-neighbor-autodiscovery.xml">
<!ENTITY LSOE SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lsvr-lsoe.xml">
<!ENTITY L3DL-SIGNING SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lsvr-l3dl-signing.xml">
]>
<?rfc comments="yes"?>
<?rfc compact="yes"?>
<?rfc inline="yes"?>
<?rfc sortrefs="yes"?>
<?rfc subcompact="yes"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc tocompact="yes"?>
<rfc category="info" docName="draft-ietf-idr-bgp-autoconf-considerations-00" ipr="trust200902">
    <front>
        <title abbrev="BGP Peer Auto-Config Reqs">Requirements and Considerations in BGP Peer Auto-Configuration</title>
        <author fullname="Randy Bush" initials="R." surname="Bush">
            <organization>Arrcus, Inc. &amp; Internet Initiative Japan</organization>
            <address>
                <postal>
                    <street>5147 Crystal Springs</street>
                    <city>Bainbridge Island</city>
                    <region>WA</region>
                    <code>98110</code>
                    <country>US</country>
                </postal>
                <email>randy@psg.com</email>
            </address>
        </author>
        <author fullname="Jie Dong" initials="J." surname="Dong">
            <organization>Huawei Technologies</organization>
            <address>
                <postal>
                    <street>Huawei Campus, No. 156 Beiqing Road</street>
                    <city>Beijing</city>
                    <code>100095</code>
                    <country>China</country>
                </postal>
                <email>jie.dong@huawei.com</email>
            </address>
        </author>
        <author role="editor" fullname="Jeffrey Haas" initials="J." surname="Haas">
            <organization>Juniper Networks</organization>
            <address>
                <postal>
                    <street>1133 Innovation Way</street>
                    <city>Sunnyvale</city>
                    <region>CA</region>
                    <code>94089</code>
                    <country>US</country>
                </postal>
                <email>jhaas@juniper.net</email>
            </address>
        </author>
        <author role="editor" fullname="Warren Kumari" initials="W." surname="Kumari">
            <organization>Google</organization>
            <address>
                <postal>
                    <street>1600 Amphitheatre Parkway</street>
                    <city>Mountain View</city>
                    <region>CA</region>
                    <code>94043</code>
                    <country>US</country>
                </postal>
                <email>warren@kumari.net</email>
            </address>
        </author>
        <date day="8" month="March" year="2021" />
        <abstract>
            <t>This draft is an exploration of the requirements, the
            alternatives, and trade-offs in BGP peer auto-discovery at various
	    layers in the stack. It is based on discussions in the IDR Working
	    Group BGP Autoconf Design Team. The current target environment is
	    the datacenter.</t>
	    <t>This document is not intended to become an RFC.</t>
        </abstract>
        <note title="Requirements Language">
	    <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
	    NOT", "SHOULD", "SHOULD 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>
        </note>
    </front>
    <middle>
        <section anchor="intro" title="Introduction">
            <t>This draft is an exploration of the requirements, the
            alternatives, and trade-offs in BGP peer auto-discovery at various
	    layers in the stack. It is based on discussions in the IDR Working
	    Group BGP Autoconf Design Team. The current target environment is
	    the datacenter.</t>
        </section>
        <section title="Design Team Determinations">
            <section title="Problem Scope">
                <t>The current target environment is BGP as used for the underlay
		routing protocol in data center networks. Other scenarios may
		be considered as part of the analysis for this work, but work on
		those environments will be deferred to other efforts.</t>
            </section>
            <section title="Simplicity">
		<t>The auto-discovery mechanism is designed to be simple.</t>
		<t>The goal is to select BGP Speakers where a BGP session may be
		successfully negotiated for a particular purpose.  The
		auto-discovery mechanism will not replace or conflict with data
		exchanged by the BGP FSM, including its OPEN message.</t>
            </section>
            <section title="BGP Auto-Discovery Protocol State Requirements">
		<t>Tersely, the required state that MUST be carried by the BGP
		Auto-Discovery Protocol for a discovered session include:</t>

		<t>BGP Session Transport State:
		<list style="symbols">
		    <t>IP addresses</t>
		    <t>Transport security parameters</t>
		    <t><xref target="RFC5082">GTSM</xref> configuration, if any</t>
		    <t><xref target="RFC5880">BFD</xref> configuration, if any</t>
		</list></t>

		<t>BGP Session Protocol State:
		<list style="symbols">
		    <t>AS Numbers</t>
		    <t>BGP Identifier</t>
		    <t>Supported AFI/SAFIs</t>
		    <t>Device Role</t>
		</list></t>

		<t>Once this information has been learned, discovery has been
		completed. The BGP Speaker has the necessary information to
		determine if it wishes to open a BGP session with the discovered
		BGP Speaker.  It can then then initiate a BGP session with the
		discovered BGP Speaker.</t>

            <section title="BGP Session Transport State">
                <t><list style="symbols">
		    <t>Support for IPv4 and IPv6 address families, but do
		    not assume that both are available.</t>
		    <t>The ability to use directly attached interface
		    addresses, or the device's Loopback address.  When using
		    the Loopback address, potentially exchange additional
		    information to bootstrap forwarding to that address.</t>
		    <t>Discovery of BGP transport protocol end-points and
		    essential properties such as IP addresses, transport security
		    parameters, layer 3 liveness mechanisms such as
		    BFD, and support for GTSM.</t>
		    <!-- XXX JMH What about ports? -->
		    <t>Transport security parameters include protocol - such as plain TCP,
		    <xref target="RFC5925">TCP-AO</xref>, <xref target="RFC4301">IPsec</xref>, 
		    <xref target="RFC2385">TCP-MD5</xref> - and necessary configuration for that
		    protocol.  Some example considerations for this are represented in 
		    <xref target="RFC8177">YANG Data Model for Key Chains</xref>.</t>
		</list></t>
	    </section>
            <section title="BGP Session Protocol State">
                <t><list style="symbols">
		    <t>Discovery of BGP peer session parameters relevant to
		    peer selection such as Autonomous System (AS) Numbers,
		    BGP Identifiers, supported address
		    families/subsequent-address families (AFI/SAFIs), and
		    device roles.</t>
		</list></t>

		<section title="BGP Auto-Discovery Device Role Requirements">
		    <t>As part of peer selection, it may be necessary to understand the
		    role of the discovered session to determine whether or not the BGP
		    Speaker desires to establish a peering session.</t>
		    <t>In some cases, role may be a clear function of the device in a
		    deployment.  An example of this is a discovered session for a BGP
		    Clos fabric: The interface may for a leaf, the aggregation layer, or
		    the spine layer.  Even then, the type of fabric, what pod it belongs
		    to and the peer type may be relevant information.</t>
		    <t>Some types of device roles may be subject to standardization,
		    such as BGP Clos fabrics.  Flexibility to permit operators to use
		    device roles for their own auto-configuration peer selection purposes
		    is a requirement.</t>
		    <t>Peering sessions may need to advertise that they are capable to be used
		    for multiple roles.  Thus, it is a requirement that the auto-discovery
		    protocols permit advertising multiple roles in the same PDU.</t>
		</section>
	    </section>
        </section>
	<section title="BGP Auto-Discovery Protocol Transport Requirements">
	    <t>BGP Auto-Discovery Protocol State may be carried in multiple
	    protocols operating in different transport layers.</t>
	    <t>Implementations supporting more than one protocol
	    for this state must have a mechanism for consistently selecting
	    discovered BGP sessions.  The BGP Identifier, which is carried
	    by the BGP OPEN message, can help detect sessions to the same
	    BGP Speaker carried in multiple protocols.</t>
	</section>
        <section title="Operator Configuration">
	<!-- XXX JMH - We have configuration requirements for our side, and
	acceptable peer requirements on the other side. -->
            <t>With BGP auto-discovery, some configuration of BGP is still
            needed. Operator configuration should be able to decide at least
            the following:
            <list style="symbols">
                <t>Select or otherwise filter which peers to actually try to
                send BGP OPEN messages.
                <list style="symbols">
		    <t>Permit the matching of device role from the discovery protocol
		    as part of peer selection.</t>
                </list></t>
                <t>Decide the parameters to use.  For example:
                <list style="symbols">
                    <t>IP addressing: IPv4 or IPv6.</t>
                    <t>Interface for peering: Loopback, or Direct.</t>
                    <t>Any special forwarding or routing needed for reaching
                    the prospective peer; for example, loopback.</t>
                    <t>AS numbering.</t>
                    <t>BGP Transport Security Parameters.</t>
		    <t>BGP Policy that is appropriate for the type of discovered
		    session.</t>
                </list></t>
            </list></t>
            <t>In addition to actually forming the BGP sessions, a common
            deployment model may also be the so called "validation" model. In this
            model, the operator configures the BGP sessions manually, and uses
            the information collected/populated by the BGP Autoconf mechanism
            to validate that the sessions are correct.</t>
            </section>
        </section>
        <section title="Design Principle Considerations">
            <t>This section summarizes the considerations of possible criteria
            for the design of a BGP auto-discovery mechanism, which may need
            further discussion in a wider community than the design team; for
	    example, the IDR Working Group.</t>

	    <section title="Transport Considerations">
		<t>The network layer of the discovery mechanism may
		impact the scoping of the deployment of the auto-discovery
		mechanism.
		    <list style="symbols">
			<t>Layer 2: For example, based on Ethernet.</t>
			<t>Layer 3: Which is generic for any link-layer protocol.</t>
			<!-- XXX JMH - multicast considerations? -->
		    </list>
	    	</t>
	    	<t>Potentially leveraging existing protocols deployed in the data
		center.</t>
	    	<t>The length of messages supported by the protocol.</t>
		<t>How extensible the protocol is to carry future state for BGP
		auto-configuration.</t>
	    </section>

	    <section title="Auto-Discovery Protocol Timing Considerations">
		<t>Establishing a reasonable expectation for the timeliness of
		auto-configuration is desirable.  When a link is plugged-in, one
		shouldn't have to wait minutes for potential peers to be discovered and BGP
		session establishment attempted.  For protocols crafted explicitly for BGP
		auto-configuration, the time for discovery should be a reasonable
		amount of time; for example ten seconds or less.</t>
		<t>Since discovery mechanisms may become very chatty when utilized by
		a number of devices on shared networks, the protocol should not
		impose undue burden on the devices on that network to process the
		discovery messages.  New auto-discovery protcols MUST NOT transmit
		messages more than once a second.</t>
		<t>When an auto-discovery mechanism is used for a point-to-point
		link, or with the expectation of establishing a BGP session with a
		single BGP Speaker on that network, the auto-discovery protocol MAY
		quiesce once the discovered BGP session has become Established.</t>
		<t>In cases where the auto-discovery protocol is carried as
		state in another protocol, that protocol will have its own timeliness
		considerations.  The auto-discovery mechanism SHOULD NOT interfere
		with the timing of the existing protocol.</t>
	    </section>

            <section title="Relationship with BGP">
	    <t>
            <list style="symbols">
                <t>The auto-discovery mechanism should be independent from BGP
		session establishment.</t>
                <t>Not affect on BGP session establishment and routing
                exchange, other than the interactions for triggering the
                setup/removal of peer sessions based on the discovery mechanism.</t>
		<!-- XXX JMH - Here the example of draft-xu dropping sessions is
		a discussion point -->
                <t>Potentially leveraging existing BGP protocol sessions for
		discovery of new BGP sessions.</t>
            </list></t>
	    </section>

	    <section title="Session Selection Considerations">
		<t>Candidate BGP sessions to a given BGP Speaker may be discovered by one
		or more auto-discovery protocols.  Even for a single protocol, multiple
		transport session endpoints may be discovered for the same BGP Speaker.
		These different sessions may be required for supporting different address
		families, such as IPv4/IPv6, depending on the BGP operational practices for
		that device.  Examples include a distinct and matching session for the
		IPv4/IPv6 address family, a unified session carrying IPv4 over IPv6 and
		vice-versa, etc.</t>
		<t>The BGP Identifier (router-id), a required protocol component of BGP,
		can serve to identify the same instance of the BGP Speaker.  This is a
		required element of the information to be carried in the auto-discovery
		protocol.</t>
		<t>When multiple mechanisms exist to discovery the same BGP speaker in an
		implementation, that implementation MUST document the process by which it
		chooses discovered peers.  Those implementations also MUST describe
		interactions with their protocol state machinery for each mechanism.</t>
	    </section>

	    <section title="Operational Trust Considerations">
		<t>Different deployment models will have different trust models and
		requirements. Some of this will be driven by the size, complexity and
		operational practices of the operator. For example, some operators have
		very strict physical protection of the datacenter, and their
		deployment model assumes that anything which plugs into devices in the
		datacenter is, by definition, trusted. Other operators take a very
		different approach, and assume the least possible amount of trust.</t>

		<t>Much of this difference is also reflected in the operator's
		bootstrapping solution. Some operators build individual configurations
		for each device, and manually provision the configuration into the
		non-volatile storage of the device before it is shipped. Other
		operators use solutions similar to PXE Boot to automatically load an
		operating system and configuration onto the device, based on a unique
		device identifier (such as management Ethernet MAC address). Some
		operators pre-configure devices with identical base configurations
		containing some bootstrapping policy logic (e.g., "If you are a Model-X
		device, and interface 23 is connected to a device of type Y, then you
		must be at Stage-2 in a Clos fabric") and allow the device to use this
		policy information to infer its role and position. A final set of
		datacenter operators, for example enterprises, would like to be able to simply
		unpack a new device, plug it in and have the device infer everything.
		(It is unclear if this is a deployment model that we want to
		support.)</t>

		<t>Many datacenter operators already have a well-developed process for
		installing and bringing up a new datacenter network, complete with
		solutions to bootstrap and configure the network. These operators will
		want to be able to use the BGP Autoconf mechanism to perform validation
		of the datacenter fabric, and ongoing "sanity-checking" to confirm
		that the datacenter is correctly cabled, and that the BGP sessions
		which have been configured from the database match what the
		autodiscovered sessions would have created. Over time, if the
		BGP Autoconf solution proves to be successful, reliable, and
		scaleable, operators may begin using it as the primary source of
		record.</t>

		<t>Closely related to these considerations is the "scope" of the
		discovery process. It is expected that many operators will wish to
		only perform discovery on "infrastructure" or "fabric" interfaces, and
		not interfaces which face customers.</t>

		<t>It is not clear that the solution that chosen will be able to
		meet all of the trust and deployment models, and we will need to
		prioritize which set(s) of deployment scenarios are the most important
		for the Working Group to solve.</t>

		<t>Trust/Operational deployment driven requirements. The solution
		should:
		<list style="symbols">
		    <t>Allow operators to determine which classes of interfaces the
		    discovery protocol operates on (e.g: "Interfaces numbered 1-17" or
		    "Only 100GE interfaces"). This is likely an
		    implementation detail.</t>
		    <t>Allow operation in a "validation" or "verification" only
		    mode, where the Autoconf solution populates a database or model
		    showing what sessions it would bring up if allowed.</t>
		    <t>Ideally allow for different levels of "granularity" in
		    pre-configuration. For example, if the protocol is capable of
		    autoconfiguring everything, it should also support filtering or
		    limiting the session according to configured policy. (Likely an
		    implementation detail.)</t>
		    <t>Support preconfigured authentication systems. This is an
		    area where more discussion is needed! The solution MUST also
		    support a "no authentication" mode. Negotiated keying
		    solutions, such as IKE, may be desireable but not mandatory for
		    the solution.</t>
		    <t>Support Ethernet sub-interfaces such as VLANs.</t>
		    <t>Support non-Ethernet interfaces.  This may include tunnels.</t>
		</list></t>
	    </section>
	    <section title="Error Handling Considerations">
		<t>The purpose of the BGP auto-discovery protocol is to discover potential
		BGP sessions and provide enough information for a BGP Speaker to start a
		BGP session.  It is possible for the information present in the
		auto-discovery protocol to not match the session's information.  Such
		mis-matches will result in different classes of problems:
		<list style="symbols">
		    <t>The BGP transport session may not connect.  This could be the
		    result of mismatches in IP addresses, GTSM configuration, BGP
		    transport security configuration, etc.  In these cases, a BGP Speaker
		    attempts to establish a session and fails.  Implementations SHOULD
		    provide a way to clear such discovered sessions or exclude them from
		    further connect attempts.</t>
		    <t>The BGP transport session connects, but the parameters in the BGP
		    OPEN message do not match those in the auto-discovery protocol.  In
		    this case, the implementation may wish to disconnect from the BGP
		    session and exclude it from further connection attempts.  The
		    implementation SHOULD raise a visible fault to the operator.  The
		    implementation SHOULD provide a mechanism to permit further attempts
		    to connect to the discovered session.</t>
		    <t>The operator may choose to leverage the auto-discovery mode for
		    validation purposes only.  The implementation should provide access to
		    the operator for discovered BGP sessions from the auto-discovery
		    protocol; for example via the user-interface.  The implementation
		    SHOULD permit a manually configured BGP session to conflict with
		    information present in the auto-discovery protocol, but SHOULD raise
		    an alarm with the operator that this has been done.</t>
		</list></t>
	    </section>
        </section>

        <section title="IANA Considerations">
            <t>This document makes no request of IANA.</t>
            <t>Note to RFC Editor: this section may be removed on publication
            as an RFC.</t>
        </section>
        <section title="Security Considerations">
            <t>There are two primary components to be secured in environments
	    utilizing BGP auto-discovery: The BGP transport layer discovered via the
	    protocol, and the auto-discovery protocol itself.
	    </t>

	    <section title="BGP Transport Security Considerations">
		<t>The purpose of the auto-discovery protocol is to ease the setup of BGP
		sessions for various applications, including data-center fabrics.
		However, care must be taken to not permit sessions to be setup outside of
		trusted environments.  It is RECOMMENDED that sessions advertised using
		BGP auto-discovery be protected at the transport layer using mechanisms
		such as TCP-AO, IPsec, or the deprecated TCP-MD5.</t>

		<t>It is thus a requirement that the auto-discovery protocol carry
		sufficient information to determine what transport security is to be used
		when establishing a BGP session.</t>

		<t>All Security Considerations from <xref target="RFC4272"/>, BGP Security
		Vulnerabilities Analysis, continue to apply.</t>
	    </section>

	    <section title="Auto-discovery Protocol Considerations">
		<t>As noted in previous sections, BGP auto-discovery be scoped to different
		portions of the network dependent on the network layar at which it is
		deployed.  The information present in the
		auto-discovery protocol is considered sensitive, since it identifies
		resources running the BGP protocol.  Care should be exercised in avoiding
		inadvertent disclosure of BGP sessions that are configured to permit
		auto-configuration even when BGP session transport security is in use.
		The auto-discovery protocol sets the context for such inadvertent
		disclosure.</t>

		<section title="Potential Scopes of an Auto-discovery Protocol">
		    <t>A Layer 2 unicast protocol targets a known device, potentially
		    discovered through other means.  The targeted device receives the
		    message.  Depending on the Layer 2 environment, other devices on the
		    same link may may be able to observe the protocol messages.  Point to
		    point links may also fall into this category.</t>

		    <t>A Layer 2 multicast protocol targets a group of devices on that
		    Layer 2 multicast domain.  A set of devices in that domain receives
		    the message.  Such messages may cross a number of devices in the
		    domain.  An example of this includes a set of Ethernet switches.</t>

		    <t>A Layer 3 unicast protocol inherits the properties of the Layer 2
		    protocol, and is intended to address a specific address - typically
		    one device. Layer 3 unicast protocols may leverage GTSM for their
		    security.</t>

		    <t>A Layer 3 multicast protocol addresses a group of devices in a
		    given multicast domain.  Such domains may be scoped, such as a single
		    link's "All-Routers" group or perhaps all devices subscribed to a
		    specific multicast group in a network.  In many cases, a Layer 3
		    multicast protocol inherits the properties of the Layer 2 multicast
		    protocol.  Link-local scoped multicast protocols may be able to
		    leverage GTSM.</t>

		    <t>A Layer 7 protocol is scoped per the mechanism in the underlying
		    protocol.  IGPs such as OSPF and IS-IS provide an "internal" scoping.
		    BGP, depending on the deployment of the underlying address family, may
		    vary from a targeted advertisement, to Internet-wide.</t>

		    <t>Each of these scopes provide different opportunities for
		    inadvertent disclosure.  The auto-discovery protocol will need to
		    address how the desired security properties interact with the protocol
		    scope.</t>
		</section>

		<section title="Desired Security Properties of the Auto-discovery Protocols">
		    <t>Data Integrity is a required property.  The data that is
		    transmitted by a speaker of the auto-configuration protocol should be
		    able to pass among its speakers properly.</t>

		    <t>Peer Entity authentication is a required property for Layer 2 and
		    Layer 3 implementations.  In a Layer 7 protocol, that protocol may
		    provide the necessary authentication.</t>

		    <t>Confidentiality is an optional property.  There is a tension
		    between the desire to provide for a simple auto-configuration protocol
		    that is easy to diagnose and debug with inadvertent disclosure.</t>

		    <t>The auto-configuration protocol must be resistant to Denial of
		    Service, and to causing Denial of Service to discovered BGP session
		    end-points.</t>
		</section>
	    </section>
        </section>
        <section title="Acknowledgments">
            <t>The IDR BGP Auto-Conf Design Team.</t>
        </section>
    </middle>
    <back>
        <references title="Normative References">
	    &RFC2119;
	    &RFC8174;
	</references>
        <references title="Informative References">
	    &LLDP;
	    &L3DL;
	    &AUTO-SESSION;
	    &RASZUK-AUTODISCOVERY;
	    &XU-AUTODISCOVERY;
	    &L3DL-SIGNING;
	    &L3DL-ULPC;
	    &LSOE;
	    &BGP-OSPF;
	    &RFC0826;
	    &RFC2385;
	    &RFC4272;
	    &RFC4301;
	    &RFC4861;
	    &RFC5082;
	    &RFC5880;
	    &RFC5925;
	    &RFC8177;
	</references>
        <section title="Analysis of Candidate Approaches">
	    <t>As part of the work on distilling the requirements for BGP auto-discovery,
	    the Design Team reviewed several proposals for implementing auto-discovery.
	    The analysis of these proposals, including missing elements the Design Team
	    decided were part of the requirements, follows.</t>

            <section title="BGP Peer Discovery at Layer Two">
                <t>BGP Discovery at Layer-2 would entail finding potential
                peers on a LAN or on Point-to-Point links and discovering their
                Layer-3 attributes, such as, IP addresses, etc.</t>
                <t>There are two available candidates for peer discovery at
                Layer-2, one is based on Link Layer Discovery Protocol (LLDP)
                and the other is based on Layer 3 Discovery Protocol, L3DL
                <xref target="I-D.ietf-lsvr-l3dl" />.</t>
                <section title="LLDP based Approach">
		    <!-- Juniper has a prototype of LLDP behavior. Nokia has a
		    shipping implementation, per Wim Hendrix? -->
                    <t>LLDP is a widely deployed protocol with implementations
                    in most devices in data centers. Currently it only advertises
                    the managment Layer-3 address, but could presumably be
                    extended to include the per-interface addresses.</t>

                    <t>LLDP has a limitation that all information must fit in a
                    single PDU (it does not support fragmentation / a
                    "session"). There is an early LLDPv2 development effort
                    to extend this in the IEEE.</t>
                    <t>
                    <xref target="I-D.acee-idr-lldp-peer-discovery" /> describes
                    how to use the LLDP IETF Organizationally Specific TLV to
                    augment the LLDP TLV set to exchange BGP Config Sub-TLVs
                    signaling:
                    <list style="symbols">
                        <t>AFI</t>
                        <t>IP address (IPv4 or IPv6)</t>
                        <t>Local AS number</t>
                        <t>Local BGP Identifier (AKA, BGP Router ID)</t>
                        <t>Session Group-ID; i.e., the BGP Device Role</t>
                        <t>BGP Session Capabilities</t>
                        <t>Key Chain</t>
                        <t>Local Address (as BGP Next Hop).</t>
                    </list></t>
                </section>
                <section title="L3DL based Approach">
                    <t>L3DL
                    <xref target="I-D.ietf-lsvr-l3dl" /> is an ongoing
                    development in the IETF LSVR Working Group with the goal
                    of discovering IP Layer-3 attributes of links, such as
                    neighbor IP addressing, logical link IP encapsulation
                    abilities, and link liveness which may then be disseminated
                    for the use of BGP-SPF and similar protocols.</t>
                    <t>L3DL Upper Layer Protocol Configuration,
                    <xref target="I-D.ietf-lsvr-l3dl-ulpc" />, details
                    signaling the minimal set of parameters needed to start a
                    BGP session with a discovered peer. Details such as
                    loopback peering are handled by attributes in the L3DL
                    protocol itself. The information which can be discovered by
                    L3DL is:
                    <list style="symbols">
                        <t>AS number</t>
                        <t>Local IP address, IPv4 or IPv6, and</t>
                        <t>BGP Authentication.</t>
                    </list></t>
                    <t>L3DL and L3DL-ULPC have well-specified security
                    mechanisms, see
                    <xref target="I-D.ietf-lsvr-l3dl-signing" />.</t>
                    <t>The functionality of L3DL-ULPC is similar but not quite
                    the same as the needs of IDR Design Team. For example, L3DL is
                    designed to meet more complex needs. L3DL's predecessor,
                    LSOE
                    <xref target="I-D.ietf-lsvr-lsoe" />, was simpler and might
                    be a better candidate for adaptation. If needed, the design
                    of LSOE may be customized for the needs of BGP peer auto-
                    disovery.</t>
                    <t>Unlike LLDP, L3DL has only one implementation, and LSOE
                    has only one open source implementation, and neither is
                    significantly deployed.</t>
                </section>
            </section>
	    <section title="Link-Local Discovery">
		<t>Some existing BGP auto-configuration mechanisms leverage "point to
		point" addressing schemes to bootstrap BGP sessions.  One example utilizes
		an IP subnet numbered such that it may contain only two hosts - for IPv4,
		a /30 or /31 network; for IPv6 a /127 network.  An additional mechanism
		may leverage <xref target="RFC0826">IPv4 ARP</xref> or
		<xref target="RFC4861">IPv6 Neighbor Discovery</xref> to learn of hosts on
		a subnet.</t>
		<t>Such existing mechanisms do not provide an auto-discovery protocol with
		necessary parameters.  Rather, they simplify configuration by permitting
		BGP session configuration templates to be easily applied to interfaces
		without requiring addressing to be known a priori.</t>
	    </section>
	    <section title="BGP peer Discovery at Layer Three">
		<t>Discovery at Layer-3 can assume IP addressability, though the IP
		addresses of potential peers are not known a priori and need to be
		discovered before further negotiation. IP multicast may be a good
		choice to address the above concern.</t>
		<t>The possible problem would appear to discovery at Layer-3 is
		that one may not know whether to use IPv4 or IPv6.  This might be
		exacerbated by the possibility of a potential peer not being on the
		local subnet, and hence broadcast and similar techniques may not be
		applicable. While in data center network or networks in a single
		administrative domain, such issue could be easily solved.</t>
		<t>If one can assume that the BGP session is based on
		point-to-point link, then discovery might try IPv6 link-local or
		even IPv4 link- local. A link broadcast or multicast protocol may
		also be used. For switched or bridged multi-point which is at least
		on the same subnet, VLAN, etc., multicast or broadcasts might be a
		viable approach.</t>
		<t>There are four available candidates for BGP peer discovery at
		Layer-3: One is based on extending BGP with new Hello message for
		peer auto-discovery. One is based on reusing BGP OPEN message format for peer
		auto-discovery. One is based on bootstrapping BGP sessions via existing BGP
		sessions.  One is based upon bootstraping a BGP Route Reflector via the OSPF
		protocol.
		</t>
		<section title="New BGP Hello Message based Approach">
		    <t>
		    <xref target="I-D.xu-idr-neighbor-autodiscovery" /> describes a
		    BGP neighbor discovery mechanism which is based on a newly
		    defined UDP based BGP Hello message. The BGP Hello message is
		    sent in multicast to discover the directly connected BGP peers.
		    According to the message header format and the TLVs carried in
		    the message, the information which can be signaled is:
		    <list style="symbols">
			<t>AS number</t>
			<t>BGP Identifier</t>
			<t>Accepted ASN list</t>
			<t>Peering address (IPv4 or IPv6)</t>
			<t>Local prefix (for loopback)</t>
			<t>Link attributes</t>
			<t>Neighbor state</t>
			<t>BGP Authentication</t>
		    </list>
		    </t>
		    <t>The mechanisms in this draft do not currently handle fragmentation.</t>
		    <t>The mechanism in this draft is perhaps unique among the other proposals
		    in requiring bi-directional state.</t>
		</section>
		<section title="BGP OPEN Message based Approach">
		    <t>
		    <xref target="I-D.raszuk-idr-bgp-auto-session-setup" /> describes
		    a BGP neighbor discovery mechanism by reusing BGP OPEN message
		    format with newly defined UDP port. The message is called BGP
		    Session Explorer (BSE) packet and is sent in multicast. Since
		    the message format is the same as BGP OPEN, the information
		    which can be signaled is:
		    <list style="symbols">
			<t>AS number</t>
			<t>BGP Identifier</t>
			<t>Peering address</t>
		    </list></t>
		    <t>The mechanism is currently under-specified with respect to a number of
		    similar properties described elsewhere.  A general implication is that
		    those properties - and others providing for extensibility of the
		    auto-discovery mechanism - would need to be added to the BGP OPEN message
		    and deal with the related impacts on the BGP session's finite-state
		    machine.</t>
		    <t>BGP PDUs, including the OPEN message, may be up to 4k in size.  Since
		    this mechanism leverages Layer 3 multicast, a PDU fragmentation mechanism
		    may need to be described.</t>
		</section>
		<section title="Bootstrapping BGP via BGP">
		    <t>
		    <!-- XXX JMH - draft raszuk auto-discovery covered by patent -->
		    <xref target="I-D.raszuk-idr-bgp-auto-discovery"/> describes a
		    new BGP address family.  The NLRI carries a Group ID + BGP
		    Identifier as the key.  A new BGP Path Attribute carries
		    information about the sessions:
		    <list style="symbols">
			<t>AS Number</t>
			<t>AFI/SAFI</t>
			<t>BGP Identifier</t>
			<t>Peer Transport Address</t>
			<t>Flags to declare a session for information only, to force
			a reset of a session on parameter changes, etc.</t>
		    </list>
		    </t>
		    <t>Since the BGP auto-discovery state is carried by BGP, it inherits the
		    security implications of the underlying BGP session.</t>
		    <t>PDU size considerations are identical to those of a BGP UPDATE
		    message.</t>
		    <t>Similarly, extensibility considerations would rely on either the new
		    BGP Path Attribute, or one yet to be defined.</t>
		</section>
		<section title="Bootstrapping BGP via OSPF">
		    <t><xref target="I-D.acee-ospf-bgp-rr"/> describes a mechanism to learn BGP
		    Route Reflectors via OSPFv2/OSPFv3 LSAs.  Multiple types of scopes are
		    defined for these LSAs to help constrain where they are advertised in an
		    OSPF domain.</t>
		    <t>The BGP Route Reflector TLV contains:
		    <list style="symbols">
			<t>Local AS Number</t>
			<t>IPv4 or IPv6 Address of the Route Reflector</t>
			<t>A list of AFI/SAFIs supported by the Route Reflector</t>
		    </list>
		    </t>
		    <t>The BGP Route Reflector TLV may be advertised more than once,
		    potentially to describe different IP transport endpoints.</t>
		    <t>This mechanism does not provide for security properties of the BGP
		    session or transport properties such as BFD or GTSM.</t>
		</section>
	    </section>
	</section>
    </back>
</rfc>
