<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []>

<rfc category="exp"
     docName="draft-kouvelas-lisp-rloc-membership-01.txt">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>

<front>
  <title>LISP RLOC Membership Distribution</title>
  <author initials='C.' surname='Cassar' fullname='Chris Cassar'>
    <organization>Cisco Systems</organization>
    <address><postal>
	<street>10 New Square Park</street>
	<city>Bedfont Lakes</city> <region>FELTHAM</region>
	<code>TW14 8HA</code>
	<country>UNITED KINGDOM</country>
      </postal>
      <email>ccassar@cisco.com</email></address>
  </author>
  <author initials='I.' surname='Kouvelas' fullname='Isidor Kouvelas'>
    <organization>Cisco Systems</organization>
    <address><postal>
	<street>Monumental Plaza, Building C</street>
	<street>44 Kifissias Ave.</street>
	<city>Maroussi</city>
	<code>15125</code>
	<region>Athens</region>
	<country>Greece</country>
      </postal>
      <email>kouvelas@cisco.com</email></address>
  </author>
  <author initials='J.' surname='Leong' fullname='Johnson Leong'>
    <organization>Cisco Systems</organization>
    <address><postal>
	<street>Tasman Drive</street>
	<city>San Jose</city> <region>CA</region>
	<code>95134</code>
	<country>USA</country>
      </postal>
      <email>joleong@cisco.com</email></address>
  </author>
  <author initials='D.' surname='Lewis' fullname='Darrel Lewis'>
    <organization>Cisco Systems</organization>
    <address><postal>
	<street>Tasman Drive</street>
	<city>San Jose</city> <region>CA</region>
	<code>95134</code>
	<country>USA</country>
      </postal>
      <email>darlewis@cisco.com</email></address>
  </author>
  <author initials='G.' surname='Schudel' fullname='Gregg Schudel'>
    <organization>Cisco Systems</organization>
    <address><postal>
	<street>Tasman Drive</street>
	<city>San Jose</city> <region>CA</region>
	<code>95134</code>
	<country>USA</country>
      </postal>
      <email>gschudel@cisco.com</email></address>
  </author>
  <date/>
  <abstract>
    <t>
      The Locator/ID Separation Protocol (LISP) operation is based on
      EID to RLOC mappings that are exchanged through a mapping
      system. The mapping system can use the RLOCs included in mapping
      registrations to construct the complete set of RLOC addresses
      across all xTRs that are members of the LISP deployment. This
      set can then be made available by the mapping system to all the
      member xTRs. An xTR can use the RLOC set to optimise protocol
      operation as well as to implement new functionality. This
      document describes the use of the LISP reliable transport
      session between an xTR and a Map-Server to communicate the
      contents of the RLOC membership set.
    </t>
  </abstract>
</front>

<middle>
  <section title="Introduction">
    <t>
      The Locator/ID Separation Protocol (LISP) registration process
      between an xTR and a Map-Server is defined in <xref
      target="RFC6833"/>. In each registration message the xTR
      communicates mapping records providing the list of routing
      locators (RLOCs) that can be used to reach the endpoint
      identifier (EID) space behind the xTR. By gleaning the RLOCs
      from all such registrations, the map-server constructs the set
      of RLOCs across all the received registrations. This set
      represents all the RLOCs used to encapsulate traffic and is the
      complete RLOC membership of the LISP network (limitations
      described below).
    </t>
    <t>
      The gleaned RLOC membership set is communicated to the member
      xTRs where it can be used to implement new functionality as well
      as to optimise protocol operation. As one example in deployments
      where the RLOC network provides guarantees against RLOC source
      address spoofing the membership can be used as a decapsulation
      filter to prevent injection of traffic by non-members. As a
      second example, a possible optimisation to existing
      functionality can use changes to the RLOC membership set to
      validate the xTR map-cache contents and trigger updates for
      out-of-date mappings.
    </t>
    <t>
      Distribution of the RLOC membership set is practical in VPN use
      cases <xref target="I-D.lewis-lisp-vpns"/> where the number of
      member xTRs and their RLOCs is bounded thus limiting both the
      number of membership elements that must be distributed as well
      as the number of members that the set must be distributed to. In
      a VPN use case the membership set is specific to each VPN
      identified through the LISP Instance ID (IID). It is reasonable
      to expect that all member xTRs for a specific VPN can register
      against a pair of redundant Map-Servers. The complete membership
      set will therefore be available on those Map-Servers.
      Alternatively, registration can be across a small set of
      Map-Servers that synchronise the RLOC membership set between
      them (outside the scope of this document). In the general case
      the RLOC membership knowledge is split across a distributed
      mapping system <xref target="I-D.ietf-lisp-ddt"/> and its
      collection and distribution would hit scale limits.
    </t>
    <t>
      Membership gleaning at the Map-Server assumes symmetric ITR and
      ETR deployments. All encapsulating ITRs also have to be
      configured as ETRs registering against the Map-Servers. This is
      a common way of deploying LISP xTRs. To allow members that do
      not own EID space (such as exclusive ITRs and proxy routers) to
      be included in the membership set the registration mechanism
      must be extended.
    </t>
    <t>
      Note that automatic membership gleaning at the Map-Server
      through registrations is just one mechanism that can be used to
      discover the RLOC set to be distributed. This document focuses
      on the membership set distribution mechanism.
    </t>
    <t>
      The LISP extension in <xref
      target="I-D.kouvelas-lisp-reliable-transport"/> introduces a
      reliable transport session between the xTR and the MS. The
      membership set communication described in this document is based
      on message exchange over the reliable transport.
    </t>
  </section>

  <section title="Requirements Notation">
    <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 target="RFC2119"/>.</t>
  </section>

  <section title="Membership Distribution Overview">
    <t>
      The RLOC membership set distribution from the Map-Server to the
      xTR is initiated on demand by the xTR. Unless the xTR
      specifically subscribes to receive the RLOC membership set no
      action is taken by the Map-Server. The granularity at which a
      Map-Server gleans membership, and that an xTR can request its
      distribution, is per EID address family and instance ID. This
      matches the VPN EID space segmentation model allowing separate
      communication of the membership of different VPNs. It also
      allows for each EID address family to have a different xTR
      membership.
    </t>
    <t>
      The Map-Server SHOULD only allow the distribution of the RLOC
      membership set for an EID instance and address family to xTRs
      that are valid members of the set being distributed. An xTR that
      has a reliable transport session established with the Map-Server
      and is registering EID prefixes with the Map-Server but not for
      the specific instance ID and EID address family, SHOULD NOT be
      sent the RLOC membership set.
    </t>
    <t>
      The set of member RLOCs for an EID address family and instance
      ID is dynamic and changes as new registrations are received by
      the Map-Server and as registration state times out. When
      membership distribution is initiated by the xTR, the complete
      RLOC set contents is communicated. In parallel updates to the
      membership set begin being communicated. The membership set
      updates continue for the duration of the reliable transport
      session or until the xTR unsubscribes from the membership
      distribution.
    </t>
  </section>

  <section title="Membership Message Format">
    <t>
      The membership distribution exchange between the xTR and
      Map-Server over the reliable transport session relies on a number
      of new messages defined below. The use of these messages is
      described in the following sections. The table below lists the
      messages. All messages carry the EID address family and instance
      ID for the membership distribution. Some messages additionally
      carry extra fields that are listed in the table.

      The new messages are:
    </t>
    <texttable anchor="message_list"
	       title="Reliable transport membership distribution TLVs">
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Message</ttcol>
      <ttcol align='left'>Direction</ttcol>
      <ttcol align='left'>Additional fields</ttcol>
      <c>22</c><c>Subscribe</c><c>xTR -> MS</c><c></c>
      <c>23</c><c>Subscribe ACK</c><c>MS -> xTR</c><c>Subscribe ID</c>
      <c>24</c><c>Subscribe NACK</c><c>MS -> xTR</c><c>Subscribe ID, Error</c>
      <c>25</c><c>Unsubscribe</c><c>xTR -> MS</c><c></c>
      <c>26</c><c>Element Add</c><c>MS -> xTR</c><c>Site-ID, RLOC</c>
      <c>27</c><c>Element Delete</c><c>MS -> xTR</c><c>Site-ID, RLOC</c>
      <c>28</c><c>Refresh Request</c><c>xTR -> MS</c><c></c>
      <c>29</c><c>Refresh Begin</c><c>MS -> xTR</c><c>Request ID</c>
      <c>30</c><c>Refresh End</c><c>MS -> xTR</c><c>Request ID</c>
    </texttable>
    <t>
      The rest of this section provides the format of each of the
      messages in the table. For a description of the Type, Length,
      Message ID and Message End Marker fields refer to <xref
      target="I-D.kouvelas-lisp-reliable-transport"/>.
    </t>

    <section title="Membership Subscribe">
      <t>
	The Membership subscribe message is sent by the xTR to the
	Map-Server to initiate RLOC membership set distribution for a
	specific EID AFI and instance ID.

	<figure align="center"><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 = 22           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Message End Marker    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership subscribe message format</postamble>
	</figure>

	<list style="symbols">
	  <t>
	    EID-AFI: EID address family for which the membership is
	    being requested.
	  </t>
	  <t>
	    EID IID: The EID instance ID identifying the VPN for which
	    the membership is being requested <xref
	    target="I-D.lewis-lisp-vpns"/>. Although the IID is only
	    24 bits in size in the data encapsulation, it is being
	    defined as a 32 bit field for consistency with the LCAF
	    Instance ID header <xref target="I-D.ietf-lisp-lcaf"/>.
	  </t>
	</list>
      </t>
    </section>

    <section title="Membership Subscribe ACK">
      <t>
	The Membership-Subscribe-ACK message is sent by the Map-Server
	to the xTR to acknowledge acceptance of a
	Membership-Request. This message indicates that the Map-Server
	will be providing the requested membership to the xTR.

	<figure align="center"><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 = 23           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |      Subscribe message ID   ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Message End Marker    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership-Subscribe-ACK message format</postamble>
	</figure>

	<list style="symbols">
	  <t>
	    Subscribe message ID: The message ID carried over from the
	    membership subscribe message.
	  </t>
	</list>
      </t>
    </section>

    <section title="Membership Subscribe NACK">
      <t>
	The Membership-Subscribe-NACK message is sent by the
	Map-Server to the xTR to reject a membership request. This
	message indicates that the Map-Server will not be providing
	the requested membership to the xTR. The membership subscribe
	NACK message can be sent at any point following the receipt of
	a Membership-Subscribe message. The Map-Server may initially
	acknowledge a subscription with a Membership Subscribe ACK and
	later when conditions change cancel the subscription by
	issuing a membership subscribe NACK message.

	<figure align="center"><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 = 24           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |      Subscribe message ID   ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |  Error code   |             ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...           Message End Marker                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership subscribe NACK message format</postamble>
	</figure>

	<list style="symbols">
	  <t>
	    Subscribe message ID: The message ID carried over from the
	    membership subscribe message.
	  </t>
	  <t>
	    Error code: The error code provides a reason for which the
	    registration was rejected by the Map-Server. Defined
	    values are:
	    <list style="format %d -">
	      <t>
		Not found: The EID instance and address family do not
		match the Map-Server configuration.
	      </t>
	      <t>
		Not enabled: The Map-Server is not configured to allow
		membership distribution for the requested EID instance
		and address family.
	      </t>
	      <t>
		Not authorized: The xTR that sent the request does not
		have a valid registration under the EID instance and
		address family.
	      </t>
	    </list>
	  </t>
	</list>
      </t>
    </section>

    <section title="Membership Unsubscribe">
      <t>
	The Membership-Unsubscribe message is sent by the xTR to the
	Map-Server to terminate RLOC membership set distribution for a
	specific EID AFI and instance ID.

	<figure align="center"><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 = 25           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Message End Marker    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership-Unsubscribe message format</postamble>
	</figure>
      </t>
    </section>


    <section title="Membership Element Add">
      <t>
	The Membership-Element-Add message is sent by the Map-Server
	to the xTR to communicate a single RLOC that is a member of
	the set for the specified EID instance and address family.

	<figure align="center"><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 = 26           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |            Site ID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                     Site ID continued                     ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |        RLOC address AFI       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RLOC address                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Message End Marker                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership-Element-Add message format</postamble>
	</figure>

	<list style="symbols">
	  <t>
	    Site ID: The 64 bit site ID value from the mapping
	    registration that contributed this RLOC to the membership
	    list. The site ID can be used by the receiving xTR to
	    derive information about the grouping of member RLOCs to
	    remote sites.
	  </t>
	  <t>
	    RLOC address AFI: Address family identifier for the RLOC
	    address in the following field.
	  </t>
	  <t>
	    RLOC address: The actual RLOC membership set element
	    address being communicated. Note that the length of this
	    field depends on the RLOC address AFI in the preceding
	    field.
	  </t>
	</list>
      </t>
    </section>

    <section title="Membership Element Delete">
      <t>
	The Membership-Element-Delete message is sent by the
	Map-Server to the xTR to communicate a single RLOC that is no
	longer a member of the set for the specified EID instance and
	address family.

	<figure align="center"><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 = 27           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |            Site ID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                     Site ID continued                     ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |        RLOC address AFI       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RLOC address                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Message End Marker                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership-Element-Delete message format</postamble>
	</figure>
      </t>
    </section>

    <section title="Membership Refresh Request">
      <t>
	The Membership-Refresh-Request message is sent by the xTR to
	the Map-Server to request that the Map-Server send the
	complete RLOC membership set contents for the specified
	instance ID and AFI.

	<figure align="center"><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 = 28           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Message End Marker    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership-Refresh-Request message format</postamble>
	</figure>
      </t>
    </section>

    <section title="Membership Refresh Begin">
      <t>
	The Membership-Refresh-Begin message is sent by the Map-Server
	to the xTR to acknowledge an earlier
	Membership-Refresh-Request message and to indicate that the
	following membership updates are part of the refresh.

	<figure align="center"><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 = 29           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Request message ID    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Message End Marker    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership-Refresh-Begin message format</postamble>
	</figure>

	<list style="symbols">
	  <t>
	    Request message ID: The message ID carried over from the
	    membership request message.
	  </t>
	</list>
      </t>
    </section>

    <section title="Membership Refresh End">
      <t>
	The Membership-Refresh-End message is sent by the Map-Server
	to the xTR to indicate that the communication of the full
	membership refresh for the specified EID instance ID and AF is
	now complete.

	<figure align="center"><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 = 30           |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Message ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            EID AFI            |            EID IID          ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Request message ID    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |       Message End Marker    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
	<postamble>Membership-Refresh-End message format</postamble>
	</figure>

	<list style="symbols">
	  <t>
	    Request message ID: The message ID carried over from the
	    membership request message.
	  </t>
	</list>
      </t>
    </section>
  </section>

  <section title="Membership Distribution Message Exchange">
    <t>
      Following the reliable transport session establishment, the EID
      membership communication relies on the exchange of the
      membership messages defined in the previous section. The
      description in this section presents the exchange from the
      perspective of a single xTR and Map-Server.

      <figure align="center"><artwork align="center"><![CDATA[
xTR                        MS
|                           |
| ------- Subscribe ------> |
|                           |
| <---- Subscribe ACK ----- |
|                           |
| ---- Refresh request ---> |
|                           |
| <---- Refresh begin ----- |
|                           |
| <----- Element add ------ |
| <----- Element add ------ |
| <----- Element add ------ |
|                           |
| <----- Refresh end ------ |
|                           |
| <-- Element add/delete -- |
|                           |
| ------ Unsubscribe -----> |
]]></artwork>
      <postamble>Typical membership distribution message exchange</postamble>
      </figure>
    </t>
    <t>
      The xTR starts the exchange by issuing a
      Membership-Subscribe-Request message to the Map-Server for a
      specific EID instance. Assuming the Map-Server is configured to
      allow membership distribution and the requesting router is
      authorized to receive the membership of the EID instance, the MS
      will reply with a Membership-Subscribe-ACK. After sending the
      ACK, the MS will start sending to the xTR Membership-Element-Add
      and Membership-Element-Delete messages corresponding to changes
      of the EID instance membership.
    </t>
    <t>
      On receipt of the Membership-Subscribe-ACK message, the xTR issues
      a Membership-Refresh-Request message in order to receive the
      complete contents of the EID instance membership held by the
      MS. The MS responds to the Membership-Refresh-Request by issuing
      a Membership-Refresh-Begin message, followed by a
      Membership-Element-Add message for each member of the EID
      instance and finally completes the refresh by sending a
      Membership-Refresh-End message.
    </t>
    <t>
      On receipt of Membership-Element-Add and
      Membership-Element-Delete messages, the xTR updates its
      membership database for the EID instance ID and address family
      by adding or deleting the entry corresponding to the
      communicated RLOC address. Note that the membership state on the
      xTR is Map-Server specific and the xTR has to maintain separate
      RLOC membership entries received from each Map-Server it
      subscribes with.
    </t>
    <t>
      When the xTR receives the Membership-Refresh-End message it
      purges all the stale membership entries it may have obtained
      during a previous session instantiation that were not updated
      during the refresh.
    </t>
    <t>
      The MS may issue Membership-Element-Add and
      Membership-Element-Delete messages corresponding to membership
      changes at any point after issuing the Membership-ACK message,
      even during a refresh.
    </t>
    <t>
      The xTR may request additional full refreshes of the complete
      membership set at any point after having received a
      Membership-Subscribe-ACK message by issuing a new
      Membership-Refresh-Request.
    </t>
    <t>
      When the Map-Server determines that an xTR is no longer eligible
      to receive membership updates, for example the EID instance and
      address family registration state of the xTR becomes invalid,
      then the Map-Server SHOULD send it a Membership-NACK message to
      indicate the termination of the membership communication.
    </t>
  </section>

  <section title="Implementation Status">
    <t>
      [Note to RFC Editor: Please remove this section and the
      reference to <xref target="RFC6982"/> before publication.]
    </t>
    <t>
      This section records the status of known implementations of the
      LISP RLOC Membership Distribution at the time of posting of this
      Internet-Draft, and is based on a proposal described in <xref
      target="RFC6982"/>.
    </t>
    <t>
      The description of implementations in this section is intended
      to assist the IETF in its decision processes in progressing
      drafts to RFCs.
    </t>
    <t>
      Cisco has a production implementation of the RLOC membership
      distribution mechanism described in this draft on IOS, IOS-XE
      and IOS-XR. The RLOC membership information is used to implement
      the data plane security functionality described in:
      <eref target="http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_lisp/configuration/xe-3s/irl-xe-3s-book/irl-data-plane-sec.html">LISP Data Plane Security</eref>.
      For additional information please contact lisp-support@cisco.com.
    </t>
  </section>

  <section title="Security Considerations">
    <t>
      The RLOC membership distribution message communication takes
      place over a LISP reliable transport connection. The security
      mechanisms of the reliable transport apply to this solution.
    </t>
  </section>

  <section title="IANA Considerations">
    <t>
      The following message types must be assigned out of the space
      defined in <xref target="I-D.kouvelas-lisp-reliable-transport"/>.
      <figure align="center"><artwork align="center"><![CDATA[
Type   Name                           Reference
-----  -----------------------------  --------------
22     Membership Subscribe           This document
23     Membership Subscribe ACK       This document
24     Membership Subscribe NACK      This document
25     Membership Unsubscribe         This document
26     Membership Element Add         This document
27     Membership Element Delete      This document
28     Membership Refresh Request     This document
29     Membership Refresh Begin       This document
30     Membership Refresh End         This document
]]></artwork>
      </figure>
    </t>
  </section>

  <section title="Acknowledgments">
    <t>
      The authors would like to thank Michiel Blokzijl, Selina
      Heimlich, Vasileios Lakafosis, Fabio Maino, Andre Pelletier,
      Jesper Skriver and Chao Yu, for their contributions to this
      specification.
    </t>
  </section>
</middle>
<back>
  <references title='Normative References'>
    <?rfc include='reference.RFC.2119' ?>
    <?rfc include='reference.RFC.6830' ?>
    <?rfc include='reference.RFC.6833' ?>
    <?rfc include="reference.I-D.kouvelas-lisp-reliable-transport.xml"?>
  </references>
  <references title='Informative References'>
    <?rfc include='reference.RFC.6982' ?>
    <?rfc include="reference.I-D.lewis-lisp-vpns.xml"?>
    <?rfc include="reference.I-D.ietf-lisp-ddt.xml"?>
    <?rfc include="reference.I-D.ietf-lisp-lcaf.xml"?>
  </references>
</back>
</rfc>
