<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<rfc category="std" docName="draft-minto-idr-bgp-autodiscovery-01"
     ipr="trust200902" obsoletes="" sortRefs="true" submissionType="IETF"
     symRefs="true" tocDepth="4" tocInclude="true" updates="" version="3"
     xml:lang="en">
  <!-- xml2rfc v2v3 conversion 2.38.1 -->

  <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
        full title is longer than 39 characters -->

    <title abbrev="Abbreviated Title">BGP Peer Auto-Configuration</title>

    <seriesInfo name="Internet-Draft"
                value="draft-minto-idr-bgp-autodiscovery"/>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Jeyananth Minto Jeganathan" initials="J.M"
            surname="Jeganathan">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>Juniper Networks, 1133 Innovation Way</street>

          <city>Sunnyvale</city>

          <region>CA</region>

          <code>94089</code>

          <country>USA</country>
        </postal>

        <email>minto@juniper.net</email>
      </address>
    </author>

    <author fullname="Venkata Shiva Krishna Reddy Avula" initials="V.S.K.R."
            surname="Avula">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>Juniper Networks, 1133 Innovation Way</street>

          <city>Sunnyvale</city>

          <region>CA</region>

          <code>94089</code>

          <country>USA</country>
        </postal>

        <email>venkatashiva@juniper.net</email>
      </address>
    </author>

    <date day="21" month="January" year="2022"/>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
        in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>Network Working Group</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>template</keyword>

    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

    <abstract>
      <t>This document describes a layer 3 protocol (Service advertisement) to
      help bgp to advertise service availability and local configurations .
      This enables bgp speakers to discover bgp peers transport endpoints and
      peer's configuration within link. With Service advertisement, receivers
      could successfully bring up bgp protocol session without mundane
      configurations.</t>
    </abstract>
  </front>

  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>

      <t>This document describes a layer 3 protocol (Service advertisement)to
      help bgp to advertise service availability and local configurations .
      This enables bgp speakers to discover bgp peer's transport endpoints and
      peer's configuration within link. With Service advertisement, receivers
      could successfully bring up bgp protocol session without mundane
      configurations.</t>

      <section numbered="true" toc="default">
        <name>Requirements Language</name>

        <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 <xref format="default"
        target="RFC2119">RFC 2119</xref>.</t>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Protocol overview</name>

      <t>This is a simple protocol to periodically send and receive UDP
      multicast PDU that contains bgp transport information in the form of
      messages and TLVs. Receiver could use this information to bootstrap the
      single hop bgp and/or loopback address bgp between directly connected
      bgp speakers. The advertised information gets expired if it is not
      refreshed before the lifetime ends.</t>

      <t>This protocol does not provide any reliability of delivery and relies
      on UDP multicast and periodic send. The current version of this protocol
      assumes the link MTU is good enough to encode BGP transport information
      or underlying IP implementation is able to fragment and reassemble for
      link local multicast PDU. But this protocol is flexible enough to
      implement a future version of fragment TLV attachment. This is to bypass
      smaller link MTU for a system or environment preventing IP fragment.</t>

      <t>Service Advertisement (SA) PDU has multiple types of messages. This
      document defines 2 types of messages. The primary/base messages are
      required for SA to operate and secondary type messages for BGP service
      advertisement.</t>
    </section>

    <section numbered="true" toc="default">
      <name>PUD layers</name>

      <t>The PDU contains a header followed by variable number of messages.
      Each message contains variable number of TLVs.</t>

      <t>SA uses type-length-value format.</t>

      <figure align="center" anchor="tlv_econde">
        <artwork align="center"><![CDATA[      0                   1                   2                   3
      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Type      |      Length                       |  Value    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Value ..
     +-+-+-+-+
]]></artwork>
      </figure>

      <t>Type: 1-octet value to interpret the value with in message. Same type
      value could be reused in different message.</t>

      <t>Length: Specifies length in octets of the value field.</t>

      <t>Value: Octet string that encodes information to be interpreted as
      specified by the Type field.</t>

      <t>SA uses message to group set of TLVs</t>

      <figure align="center" anchor="message_econde">
        <artwork align="center"><![CDATA[     0                   1                   2                   3
     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |message Type |      Length                     | Reserved      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | message ID                                                    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | TLVs
     +-----]]></artwork>
      </figure>

      <t>message Type: This 1-octet value identifies type of message.</t>

      <t>Message Length: Specifies the length in octets of the Message ID and
      TLVs.</t>

      <t>Message ID :32-bit value used to identify this message. Used for
      logging purpose.</t>

      <t>SA PDU</t>

      <figure align="center" anchor="pdu_econde">
        <artwork align="center"><![CDATA[    0                   1                   2                   3
     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Version   |      PDU Length               |     Reserved  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                          Identifier.                          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Messages
     +-----]]></artwork>
      </figure>

      <t>Version: This 1-octet unsigned integer indicates the protocol
      version. This version of the specification specifies Service
      Advertisement version 0.</t>

      <t>PDU Length: This 2-octet unsigned integer specifies the length</t>

      <t>Identifier: 4 octet field that uniquely identifies PDU sender. BGP id
      could be used for this purpose. This helps to uniquely identify sender
      across the parallel links between same nodes.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Messages</name>

      <t>The document defines following messages.</t>

      <ol spacing="normal">
        <li>SA Base message</li>

        <li>BGP service advertisement message</li>
      </ol>

      <section numbered="true" toc="default">
        <name>SA Base message</name>

        <t>The SA Base message is mandatory message and mainly used for the
        protocol operation.</t>

        <t>The document defines following TLVs for SA Base message.</t>

        <ol spacing="normal">
          <li>Remaining lifetime TLV</li>

          <li>Config sequence TLV</li>

          <li>Authentication TLV</li>

          <li>Refresh request TLV</li>
        </ol>

        <section numbered="true" toc="default">
          <name>Remaining lifetime TLV</name>

          <t>Remaining lifetime describes how long receiver should keep the
          state without seeing a PDU from the sender. The lifetime gets
          updated when receiver accepts the PDU.</t>

          <t>Type : 17</t>

          <t>Length: 2 octets</t>

          <t>Value: Remaining lifetime in seconds</t>
        </section>

        <section numbered="true" toc="default">
          <name>Config sequence TLV</name>

          <t>Specifies a 4-octet configuration sequence number. Receiver could
          make use the number to detect config change. This will be useful to
          restart the bgp session with new parameters.</t>

          <t>Type : 18</t>

          <t>Length: 4 octets</t>

          <t>Value: unsigned sequence number</t>
        </section>

        <section numbered="true" toc="default">
          <name>Authentication TLV</name>

          <t>Specifies authentication.</t>

          <figure align="center" anchor="Auth_econde">
            <artwork align="center"><![CDATA[?     0                   1                   2                   3
      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Type      |      Length                       |  key-id   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | key-id        | Sequence number                             ..|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Seq no        | Hash/digest
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure>

          <t>Type : 19</t>

          <t>Length: variable</t>

          <t>key-id : keychain id</t>

          <t>Sequence-number - 4 byte sequence number of this SA base
          message.</t>

          <t>Digest - Hash computed for this message using key-id mapped
          algorithm</t>
        </section>

        <section numbered="true" toc="default">
          <name>Refresh request TLV</name>

          <t>Optional TLV to trigger receivers to immediately send SA PDU.
          Presence of the TLV indicates sender request refresh. This will be
          used during the restart to learn about services quickly from
          connected devices to speed up service discovery.</t>

          <t>Type : 20</t>

          <t>Length: 0 octets</t>
        </section>
      </section>

      <section numbered="true" toc="default">
        <name>BGP service advertisement message</name>

        <t>BGP Service Advertisement message provides transport information to
        bring up the bgp session. This document defines transport information
        TLVs and session information TLVs for BGP Service Advertisement
        messages.</t>

        <t>Message type of BGP Service Advertisement message: 2.</t>

        <t>Following are the Transport information TLVs</t>

        <ol spacing="normal">
          <li>Local Address</li>

          <li>Security TTL</li>

          <li>Security Authentication</li>

          <li>Link Address</li>

          <li>Transport Preference.</li>

          <li>TCP MSS</li>
        </ol>

        <section numbered="true" toc="default">
          <name>Local address</name>

          <t>Specifies a local address used for bgp transport connection.
          Address encoding uses a below format. 2 octets describe the address
          and followed by address value.</t>

          <figure align="center" anchor="Address_econde">
            <artwork align="center"><![CDATA[      0                   1                   2                   3
      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |L|   flags     | Res   | pref  |  IPv4/v6 Address              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | IPv4/v6 Address              ... 
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                        Address
L bit - Address of loopback interface.
pref  - Preference value of 4 bits. Value from 1 to 15. 
       0 indicates dont care.
       1 higly preferred and 15 means least preferred. 
Address - For IPv4 4 octets and IPv6 16 octets 


]]></artwork>
          </figure>

          <figure align="center" anchor="IPv4_transport_econde">
            <artwork align="center"><![CDATA[?     0                   1                   2                   3
      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Type      |      Length                   |     Address1  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Address1                                                      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |               | Address2 ... 
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure>

          <t>Type : 17</t>

          <t>Length: variable. multiples of 6 octets</t>

          <t>Value: IPv4 addresses with address encoding.</t>
        </section>

        <section numbered="true" toc="default">
          <name>Local IPv6 address</name>

          <t>Specifies a IPv6 local address used for bgp transport
          connection.</t>

          <t>Type : 18</t>

          <t>Length: multiples of 18 octets</t>

          <t>Value: IPv6 addresses with address encoding used for transport
          connection.</t>
        </section>

        <section numbered="true" toc="default">
          <name>Security TTL</name>

          <t>TTL be accepted for bgp messages</t>

          <t>Type : 19</t>

          <t>Length: 0</t>

          <t>Value: Presence of this TLV indicates that receiver accepts only
          packets with 255 TTL.</t>
        </section>

        <section numbered="true" toc="default">
          <name>Security Authentication</name>

          <t>Type : 20</t>

          <t>Length: 1</t>

          <t>Value:This supports only two values 0 and 1.</t>

          <t>0 indicates TCP md5. 1 indicates TCP-AO Absence of this TLV
          indicates, no authentication used for connection.</t>
        </section>

        <section numbered="true" toc="default">
          <name>TCP MSS</name>

          <t>TCP MSS used for the connection</t>

          <t>Type : 21</t>

          <t>Length: 4</t>

          <t>Value:Value in bytes</t>

          <t>Indicates the preference of TCP MSS for the transport
          connection.</t>
        </section>

        <section numbered="true" toc="default">
          <name>Link Address</name>

          <t>This could be used for receiver to get nexthop information for
          local address TLV when sender's running IPv4 PDU and prefer IPv6
          transport and vice-a-versa. This could also be used to provide
          reachability to loopback addresses with link address.</t>

          <t>Type : 22</t>

          <t>Length: 4 for IPv4 address and 16 for IPv6 address 6 for mac
          address.</t>

          <t>Value:interface IPv4 or IPv6 or mac address .</t>
        </section>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Protocol operation</name>

      <t>A sender should periodically send PDU to refresh the advertised
      information before its lifetime expires. An implementation may send PDU
      well before the lifetime expires based on specific events. These events
      could be a local config change or discovering a new advertiser. Also,
      implementation could switch to fast refresh when content of the pdu
      changes and move back to regular refresh interval. The fast refresh will
      help in quicker discovery and may help update content in case of auto
      order delivery. As stated above, this is purely an implementation
      technique than the protocol mandate.</t>

      <t>To discover multi-data(IPv4/IPv6) protocol environment(mixed
      transport mode in a single link) sender shall send both data-protocol
      pdu based on local configuration. When sender choose to send both data
      protocol PDU it should make sure that semantic content of the messages
      should be same. An implementation may choose to use preferred data
      protocol PDU as primary send PDU and only send other data protocol PDU
      during the interesting events. This optimization is only possible when
      all the known advertisers participates in both data-protocol.</t>

      <t>A sender should send PDU to refresh before previously advertised
      lifetime expires. If bgp is configured with only one transport address
      family(IPv4/v6) then sender shall only send corresponding data protocol
      PDU. If both addresses are configured, then it shall use both data
      protocol PDUs. PDUs are sent with source address as link primary address
      and destination is link local all- routers with TTL 255. If
      authentication is enabled then add authentication TLV using the
      authentication procedure described in authentication section. Populate
      other TLVs based on local preference and send the PDU on configured
      link. Semantic content (transport and session information) of the PDU
      should be same irrespective of data protocol.</t>

      <t>Receiver resets the state when it accepts new PDU irrespective of the
      data protocol. Receiver shall add a route for the address in local
      address TLV with nexthop as source address of the PDU if PDU(PUD) data
      protocol and local address is same address family. Otherwise if link
      address is available, it could be used as nexthop for the address in
      local address TLV. Receivers consolidate state from various TLVs and
      pass it on to BGP for the session opening. An implementation could only
      notify if the state change from previous reported state to bgp or the
      configuration sequence number changes from the receiver. How bgp uses
      this information is beyond the scope of the document.</t>

      <section numbered="true" toc="default">
        <name>Transmit procedure</name>

        <t>PDUs are sent with source address as link's primary address and
        destination is link local all-routers with TTL 255. PDU is sent to SA
        UDP port(179 if assigned). After the header, SA Base message should be
        first message. If authentication is enabled then add authentication
        TLV using the authentication procedure described in authentication
        section. This authentication TLV should be first TLV of PDU. Add
        lifetime and config sequence TLVs defined in this document. Both these
        TLVs are mandatory TLVs. After the SA base message, add bgp service
        advertisement message with appropriate TLVs.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Receiver procedure</name>

        <t>When a SA PDU received, following sanity procedure must be
        followed.</t>

        <t>If TTL is not 255 then discard the PDU.</t>

        <t>If the version is not compatible (Only compatible version is 0)
        then discard the PDU.</t>

        <t>If the PDU length is greater than IP header length, then discard
        it.</t>

        <t>If the first message is not SA Base, then discard the pdu.</t>

        <t>If authentication is enabled and first TLV in the SA base message,
        then discard the PDU.</t>

        <t>If authentication is enabled, then follow the authentication
        procedure.</t>

        <t>If authentication is failed, then discard the PDU.</t>

        <t>With above steps, sanity of the PDU header is verified. Receiver
        should start decoding the TLV information. Once all the TLV sanity
        checked receiver shall keep the decoded information. If the receiver
        decides to keep the information, then it should start a timer with
        specified lifetime or refresh lifetime with newer one.</t>

        <t>The identifier in PDU header uniquely identifies the advertisement.
        An implementation could either implement neighbor semantic or state
        semantic from the advertised information along with identifier. This
        document does not recommend one or other.</t>

        <t>Received and decoded information shall be passed on to bgp if the
        content does not match with last received or the local config has
        changed. This is a desired optimization, so that SA does not
        unnecessarily trigger failed bgp session open attempts. How bgp uses
        this information is beyond the scope of the document.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Transport endpoint reachability</name>

        <t>Advertised local address reachability can either be gathered from
        the source address or a link address TLV. Source address of the PDU
        may not give reachability for all deployment(Sender using the IPv6
        data protocol but prefer v4 transport). In those cases, link address
        TLV will provide reachability.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Protocol Authentication operation</name>

        <t>A sender that wants to authenticate Service messages should include
        Authentication TLV as part of SA base message.</t>

        <t>Sender needs to include all the fields of Authentication TLV as
        shown in section 4.1.3. It needs to assign a unique KEY-ID to each
        authentication combination configured on the device. Key-length needs
        to be set to configured key's length in bytes. Sequence number is a
        32-bit unsigned integer that may increment by one each time a new
        message is sent. Any change in TLVs for a previously advertised local
        address needs to be sent with an incremented TLV. Digest value can be
        of variable length depending upon type of authentication being used.
        This value is calculated over all the contents of service message.</t>

        <t>Receiver on receiving this TLV has a sequential processing of
        individual fields of TLV. Sequence number is read from TLV and is
        compared against any existing state from this sender. If sequence
        number is lesser than previously received, this packet is dropped
        except when bgp session goes down.If last received sequence number was
        m and current received sequence number is n, n needs be in range of
        [m+1, m + 2^(32 - 1)]. This exception is needed to handle a restarted
        sender who is unable to retrieve earlier sequence number due to
        restart. This is required when SA uses bigger lifetime. After getting
        KEY-id, it checks for a matching KEY-ID on it. If it does not exist,
        packet is dropped. Next Key-length of locally configured key is
        compared against key-length received in this TLV, if they do not match
        packet is dropped. Similarly, a comparison is done for authentication
        types of locally configured key and received TLV. If they do not
        match, packet is dropped. After above checks, hash is computed for all
        the contents of service with locally configured key and compared
        against received hash value. If they are same, authentication
        information matches with local configuration and messages can be
        further processed with protocol operations depending on type of this
        message.</t>
      </section>
    </section>

    <section anchor="Acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>

      <t>Jeffrey Hass provided many useful technical and editorial comments
      and suggestions for improvement.</t>
    </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>

      <t>This document requests IANA to allocate a new UDP port (179 is the
      preferred number ) and 2 message type code for service
      advertisments.</t>

      <figure align="center" anchor="pdu_econde_ref">
        <artwork align="center"><![CDATA[ Value TLV Name Reference -----
        ------------------------------------ ------------- Service Name:
        Service advertisements Transport Protocol: UDP Assignee: IESG
        iesg@ietf.org Description: Service advertisments for auto
        configuration. Reference: This document --
        draft-minto-idr-bgp-autodiscovery.txt Port Number: 179 -- To be
        assigned by IANA. ]]></artwork>
      </figure>

      <section numbered="true" toc="default">
        <name>Message of SA</name>

        <t>This document requests IANA to create a new registry following
        messages "Messages of SA " with the following registration
        procedure:</t>

        <figure align="center" anchor="msg_econde">
          <artwork align="center"><![CDATA[?       Registry Name: Messages of SA protocol
          Value        Message name                      Reference 
          -------    ---------------------------------- ------------- 
          0          Reserved                           This document 
          1          Base message                       This document 
          2          BGP Service Advertisement          This document]]></artwork>
        </figure>
      </section>

      <section numbered="true" toc="default">
        <name>TLVs of SA base Message</name>

        <t>This document requests IANA to create a new registry following
        messages "TLVs of SA base Message" with the following registration
        procedure:</t>

        <figure align="center" anchor="tlv_econde_reg">
          <artwork align="center"><![CDATA[       Registry Name: TLVs of SA base Message.
          Value TLV Name                              Reference 
          -------- ---------------------------------- ------------- 
             0-16   Reserved                            This document 
               17   Remaining lifetime TLV              This document
               18   Config sequence TLV                 This document 
               19   Authentication                      This document
               20   Refresh request TLV                 This document 
          224-255  Experimental ]]></artwork>
        </figure>
      </section>

      <section numbered="true" toc="default">
        <name>TLVs of BGP service advertisement message</name>

        <t>This document requests IANA to create a new registry following
        messages "TLVs of BGP Service Advertisement" with the following
        registration procedure:</t>

        <figure align="center" anchor="tlv_econde_reg_bgp">
          <artwork align="center"><![CDATA[?       Registry Name: TLVs of BGP Services.
       Value TLV Name                              Reference 
       -------- ---------------------------------- ------------- 
           0-16   Reserved                           This document
             17  Local Address                       This document 
             18  Local IPv6 Address                  This document   
             19  Security TTL                        This document 
             20  Security Authentication             This document   
             21  TCP MSS                             This document 
             22  Link Address                        This document  
        224-255  Experimental                        This document  ]]></artwork>
        </figure>
      </section>
    </section>

    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>

      <t>This security considerations for BGP [RFC4271] apply equally to this
      extension for BGP session establishment.</t>

      <t>BGP sessions transport end points discovered over this protocol can
      be protected against various attacks by using authentication for packets
      as described in Section 5.4.</t>

      <t>Usage of seqeunce number and authentication reduces likelihood of
      replay attacks. As the protocol is not connection-oriented, it makes it
      feasible to change authentication parameters for protocol messages. This
      further reduces the likelihood of replay-attacks.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>

        <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->

        <reference anchor="RFC2119"
                   target="https://www.rfc-editor.org/info/rfc2119"
                   xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement
            Levels</title>

            <seriesInfo name="DOI" value="10.17487/RFC2119"/>

            <seriesInfo name="RFC" value="2119"/>

            <seriesInfo name="BCP" value="14"/>

            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <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>
        </reference>
      </references>

      <references>
        <name>Informative References</name>

        <!-- Here we use entities that we defined at the beginning. -->

        <reference anchor="RFC2629"
                   target="https://www.rfc-editor.org/info/rfc2629"
                   xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2629.xml">
          <front>
            <title>Writing I-Ds and RFCs using XML</title>

            <seriesInfo name="DOI" value="10.17487/RFC2629"/>

            <seriesInfo name="RFC" value="2629"/>

            <author fullname="M. Rose" initials="M." surname="Rose">
              <organization/>
            </author>

            <date month="June" year="1999"/>

            <abstract>
              <t>This memo presents a technique for using XML (Extensible
              Markup Language) as a source format for documents in the
              Internet-Drafts (I-Ds) and Request for Comments (RFC) series.
              This memo provides information for the Internet community.</t>
            </abstract>
          </front>
        </reference>

        <reference anchor="RFC4271">
          <!-- the following is the minimum to make xml2rfc happy -->

          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>

            <author initials="Y" surname="Rekhter"/>

            <author initials="T" surname="Li"/>

            <author initials="S" surname="Hares"/>

            <date year="2006"/>
          </front>

          <seriesInfo name="RFC" value="4271"/>
        </reference>

        <reference anchor="RFC3552"
                   target="https://www.rfc-editor.org/info/rfc3552"
                   xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml">
          <front>
            <title>Guidelines for Writing RFC Text on Security
            Considerations</title>

            <seriesInfo name="DOI" value="10.17487/RFC3552"/>

            <seriesInfo name="RFC" value="3552"/>

            <seriesInfo name="BCP" value="72"/>

            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>

            <author fullname="B. Korver" initials="B." surname="Korver">
              <organization/>
            </author>

            <date month="July" year="2003"/>

            <abstract>
              <t>All RFCs are required to have a Security Considerations
              section. Historically, such sections have been relatively weak.
              This document provides guidelines to RFC authors on how to write
              a good Security Considerations section. This document specifies
              an Internet Best Current Practices for the Internet Community,
              and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>

        <reference anchor="RFC5226"
                   target="https://www.rfc-editor.org/info/rfc5226"
                   xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5226.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in
            RFCs</title>

            <seriesInfo name="DOI" value="10.17487/RFC5226"/>

            <seriesInfo name="RFC" value="5226"/>

            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>

            <author fullname="H. Alvestrand" initials="H."
                    surname="Alvestrand">
              <organization/>
            </author>

            <date month="May" year="2008"/>

            <abstract>
              <t>Many protocols make use of identifiers consisting of
              constants and other well-known values. Even after a protocol has
              been defined and deployment has begun, new values may need to be
              assigned (e.g., for a new option type in DHCP, or a new
              encryption or authentication transform for IPsec). To ensure
              that such quantities have consistent values and interpretations
              across all implementations, their assignment must be
              administered by a central authority. For IETF protocols, that
              role is provided by the Internet Assigned Numbers Authority
              (IANA).</t>

              <t>In order for IANA to manage a given namespace prudently, it
              needs guidelines describing the conditions under which new
              values can be assigned or when modifications to existing values
              can be made. If IANA is expected to play a role in the
              management of a namespace, IANA must be given clear and concise
              instructions describing that role. This document discusses
              issues that should be considered in formulating a policy for
              assigning values to a namespace and provides guidelines for
              authors on the specific text that must be included in documents
              that place demands on IANA.</t>

              <t>This document obsoletes RFC 2434. This document specifies an
              Internet Best Current Practices for the Internet Community, and
              requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>

        <reference anchor="bgp-autoconf-considerations"
                   target="https://datatracker.ietf.org/doc/draft-ietf-idr-bgp-autoconf-considerations/"
                   xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5226.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in
            RFCs</title>

            <seriesInfo name="DOI" value="10.17487/RFC5226"/>

            <seriesInfo name="RFC" value="5226"/>

            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>

            <author fullname="H. Alvestrand" initials="H."
                    surname="Alvestrand">
              <organization/>
            </author>

            <date month="May" year="2008"/>

            <abstract>
              <t>Many protocols make use of identifiers consisting of
              constants and other well-known values. Even after a protocol has
              been defined and deployment has begun, new values may need to be
              assigned (e.g., for a new option type in DHCP, or a new
              encryption or authentication transform for IPsec). To ensure
              that such quantities have consistent values and interpretations
              across all implementations, their assignment must be
              administered by a central authority. For IETF protocols, that
              role is provided by the Internet Assigned Numbers Authority
              (IANA).</t>

              <t>In order for IANA to manage a given namespace prudently, it
              needs guidelines describing the conditions under which new
              values can be assigned or when modifications to existing values
              can be made. If IANA is expected to play a role in the
              management of a namespace, IANA must be given clear and concise
              instructions describing that role. This document discusses
              issues that should be considered in formulating a policy for
              assigning values to a namespace and provides guidelines for
              authors on the specific text that must be included in documents
              that place demands on IANA.</t>

              <t>This document obsoletes RFC 2434. This document specifies an
              Internet Best Current Practices for the Internet Community, and
              requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>

        <!-- A reference written by by an organization not a person. -->
      </references>
    </references>

    <section anchor="app-additional" numbered="true" toc="default">
      <name>Additional Stuff</name>

      <t>This becomes an Appendix.</t>
    </section>

    <!-- Change Log
    -->
  </back>
</rfc>
