<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.22 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boucadair-lisp-pubsub-flow-examples-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="LISP PubSub Examples">LISP PubSub Flow Examples</title>
    <seriesInfo name="Internet-Draft" value="draft-boucadair-lisp-pubsub-flow-examples-01"/>
    <author fullname="Mohamed Boucadair">
      <organization>Orange</organization>
      <address>
        <postal>
          <city>Rennes</city>
          <code>35000</code>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <date year="2023" month="February" day="07"/>
    <area>Routing</area>
    <workgroup>Locator/ID Separation Protocol</workgroup>
    <keyword>LISP</keyword>
    <abstract>
      <t>This document provides a set of flow examples to illustrate the use of LISP PubSub specification.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Locator/ID Separation Protocol Working Group mailing list (lisp@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/lisp/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/boucadair/lisp-pubsub-flow-examples"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document provides a set of flow examples as a companion to the LISP PubSub specification <xref target="I-D.ietf-lisp-pubsub"/>. The document is meant to illustrate and assess the behavior of LISP control nodes under specific conditions.</t>
      <t>The examples use a simplified/simple setup for the sake of illustration.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the terms defined in <xref target="I-D.ietf-lisp-pubsub"/>.</t>
      <t>The following terms and notations are used in this document:</t>
      <dl>
        <dt>init_nonce:</dt>
        <dd>
          <t>the nonce that is initially included in a Map-Request to create a subscription.</t>
        </dd>
        <dt>initial subscription request:</dt>
        <dd>
          <t>the Map-Request that was used to create the initial subscription. This request has the nonce value set to init_nonce.</t>
        </dd>
        <dt>nonce++:</dt>
        <dd>
          <t>incremented nonce by 1.</t>
        </dd>
        <dt>init_key_id:</dt>
        <dd>
          <t>the key identifier that was used in the Map-Request with init_nonce.</t>
        </dd>
        <dt>trans_count:</dt>
        <dd>
          <t>retransmission counter as per Section 5.7 of <xref target="RFC9301"/>.</t>
        </dd>
        <dt>trans_timer:</dt>
        <dd>
          <t>retransmission timer as per Section 5.7 of <xref target="RFC9301"/>.</t>
        </dd>
        <dt>AT:</dt>
        <dd>
          <t>Attacker</t>
        </dd>
      </dl>
    </section>
    <section anchor="sec-iss">
      <name>Initial Successful Subscription</name>
      <t><xref target="iss"/> shows the example a successful subscription. The example assumes that a security association is in place between the xTR ad the Map-Server (Section 7.1 of <xref target="I-D.ietf-lisp-pubsub"/>) and that all integrity-protection checks are successfully passed.</t>
      <figure anchor="iss">
        <name>An Example of Successful Initial Subscription</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="592" viewBox="0 0 592 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,96 L 8,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 8,336" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,96 L 176,192" fill="none" stroke="black"/>
              <path d="M 176,224 L 176,336" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,368" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
              <path d="M 400,64 L 400,368" fill="none" stroke="black"/>
              <path d="M 416,32 L 416,64" fill="none" stroke="black"/>
              <path d="M 416,112 L 416,256" fill="none" stroke="black"/>
              <path d="M 416,288 L 416,368" fill="none" stroke="black"/>
              <path d="M 584,112 L 584,256" fill="none" stroke="black"/>
              <path d="M 584,288 L 584,368" fill="none" stroke="black"/>
              <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
              <path d="M 376,32 L 416,32" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 376,64 L 416,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
              <path d="M 416,112 L 584,112" fill="none" stroke="black"/>
              <path d="M 176,144 L 192,144" fill="none" stroke="black"/>
              <path d="M 200,142 L 400,142" fill="none" stroke="black"/>
              <path d="M 200,146 L 400,146" fill="none" stroke="black"/>
              <path d="M 408,144 L 416,144" fill="none" stroke="black"/>
              <path d="M 8,192 L 176,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 176,224" fill="none" stroke="black"/>
              <path d="M 176,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 200,238 L 400,238" fill="none" stroke="black"/>
              <path d="M 200,242 L 400,242" fill="none" stroke="black"/>
              <path d="M 408,240 L 416,240" fill="none" stroke="black"/>
              <path d="M 416,256 L 584,256" fill="none" stroke="black"/>
              <path d="M 416,288 L 584,288" fill="none" stroke="black"/>
              <path d="M 176,304 L 192,304" fill="none" stroke="black"/>
              <path d="M 200,302 L 392,302" fill="none" stroke="black"/>
              <path d="M 200,306 L 392,306" fill="none" stroke="black"/>
              <path d="M 408,304 L 416,304" fill="none" stroke="black"/>
              <path d="M 8,336 L 176,336" fill="none" stroke="black"/>
              <path d="M 416,368 L 584,368" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="400,304 388,298.4 388,309.6" fill="black" transform="rotate(0,392,304)"/>
              <polygon class="arrowhead" points="208,240 196,234.4 196,245.6" fill="black" transform="rotate(180,200,240)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="396" y="52">MS</text>
                <text x="52" y="116">Generate</text>
                <text x="96" y="116">a</text>
                <text x="120" y="116">new</text>
                <text x="152" y="116">key</text>
                <text x="296" y="116">Map-Request(init_nonce,</text>
                <text x="32" y="132">and</text>
                <text x="60" y="132">an</text>
                <text x="104" y="132">initial</text>
                <text x="320" y="132">init_key_id,..)</text>
                <text x="500" y="132">Security/integrity</text>
                <text x="44" y="148">nonce.</text>
                <text x="96" y="148">Store</text>
                <text x="140" y="148">them</text>
                <text x="468" y="148">protection</text>
                <text x="540" y="148">check.</text>
                <text x="48" y="164">locally</text>
                <text x="96" y="164">for</text>
                <text x="132" y="164">this</text>
                <text x="436" y="164">No</text>
                <text x="472" y="164">State</text>
                <text x="512" y="164">for</text>
                <text x="548" y="164">this</text>
                <text x="68" y="180">subscription</text>
                <text x="468" y="180">xTR-ID/EID</text>
                <text x="524" y="180">is</text>
                <text x="560" y="180">found</text>
                <text x="452" y="196">Create</text>
                <text x="496" y="196">the</text>
                <text x="528" y="196">sub</text>
                <text x="560" y="196">and</text>
                <text x="292" y="212">Map-Notify(init_nonce,</text>
                <text x="448" y="212">store</text>
                <text x="520" y="212">init_nonce,</text>
                <text x="368" y="228">,...)</text>
                <text x="476" y="228">init_key_id,</text>
                <text x="544" y="228">...</text>
                <text x="92" y="244">Security/integrity</text>
                <text x="60" y="260">protection</text>
                <text x="132" y="260">check.</text>
                <text x="40" y="276">Check</text>
                <text x="84" y="276">that</text>
                <text x="120" y="276">rcv</text>
                <text x="296" y="276">Map-Notify-Ack(init_nonce</text>
                <text x="40" y="292">nonce</text>
                <text x="76" y="292">==</text>
                <text x="132" y="292">init_nonce</text>
                <text x="376" y="292">,...)</text>
                <text x="48" y="308">Confirm</text>
                <text x="96" y="308">the</text>
                <text x="128" y="308">sub</text>
                <text x="160" y="308">and</text>
                <text x="500" y="308">Security/integrity</text>
                <text x="36" y="324">wait</text>
                <text x="72" y="324">for</text>
                <text x="116" y="324">notifs</text>
                <text x="468" y="324">protection</text>
                <text x="544" y="324">checks.</text>
                <text x="444" y="340">This</text>
                <text x="516" y="340">subscription</text>
                <text x="436" y="356">is</text>
                <text x="464" y="356">now</text>
                <text x="504" y="356">ACKed</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                    +----+
                     |xTR|                    | MS |
                     +-+-+                    +--+-+
                       |                         |
.--------------------. |                         |
| Generate a new key | | Map-Request(init_nonce, | .--------------------.
| and an initial     | |        init_key_id,..)  | | Security/integrity |
| nonce. Store them  +-+=========================+-+ protection check.  |
| locally for this   | |                         | | No State for this  |
| subscription       | |                         | | xTR-ID/EID is found|
'--------------------' |                         | | Create the sub and |
                       | Map-Notify(init_nonce,  | | store init_nonce,  |
.--------------------. |                   ,...) | | init_key_id, ...   |
| Security/integrity +-+<========================+-+                    |
| protection check.  | |                         | '--------------------'
| Check that rcv     | |Map-Notify-Ack(init_nonce|
| nonce == init_nonce| |                    ,...)| .--------------------.
| Confirm the sub and+-+========================>+-+ Security/integrity |
| wait for notifs    | |                         | | protection checks. |
'--------------------' |                         | | This subscription  |
                       |                         | | is now ACKed       |
                       |                         | '--------------------'
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="successful-notification">
      <name>Successful Notification</name>
      <t><xref target="sn"/> illustrates the example of a successful delivery of notification updates that match an existing subscription state. This example assumes that a security association is in place between the xTR and the Map-Server (Section 7.1 of <xref target="I-D.ietf-lisp-pubsub"/>) and that all subsequent integrity-protection checks are successfully passed.</t>
      <figure anchor="sn">
        <name>An Example of Successful Notification</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="600" viewBox="0 0 600 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,96 L 8,272" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,96 L 176,272" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,288" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 384,32 L 384,64" fill="none" stroke="black"/>
              <path d="M 408,64 L 408,288" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
              <path d="M 424,96 L 424,176" fill="none" stroke="black"/>
              <path d="M 424,208 L 424,288" fill="none" stroke="black"/>
              <path d="M 592,96 L 592,176" fill="none" stroke="black"/>
              <path d="M 592,208 L 592,288" fill="none" stroke="black"/>
              <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
              <path d="M 384,32 L 424,32" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 384,64 L 424,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
              <path d="M 424,96 L 592,96" fill="none" stroke="black"/>
              <path d="M 336,112 L 352,112" fill="none" stroke="black"/>
              <path d="M 176,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 200,126 L 408,126" fill="none" stroke="black"/>
              <path d="M 200,130 L 408,130" fill="none" stroke="black"/>
              <path d="M 416,128 L 424,128" fill="none" stroke="black"/>
              <path d="M 424,176 L 592,176" fill="none" stroke="black"/>
              <path d="M 424,208 L 592,208" fill="none" stroke="black"/>
              <path d="M 360,224 L 376,224" fill="none" stroke="black"/>
              <path d="M 176,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 200,238 L 400,238" fill="none" stroke="black"/>
              <path d="M 200,242 L 400,242" fill="none" stroke="black"/>
              <path d="M 416,240 L 424,240" fill="none" stroke="black"/>
              <path d="M 8,272 L 176,272" fill="none" stroke="black"/>
              <path d="M 424,288 L 592,288" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="408,240 396,234.4 396,245.6" fill="black" transform="rotate(0,400,240)"/>
              <polygon class="arrowhead" points="208,128 196,122.4 196,133.6" fill="black" transform="rotate(180,200,128)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="404" y="52">MS</text>
                <text x="92" y="116">Security/integrity</text>
                <text x="268" y="116">Map-Notify(nonce</text>
                <text x="380" y="116">...)</text>
                <text x="460" y="116">Update</text>
                <text x="500" y="116">is</text>
                <text x="552" y="116">triggered</text>
                <text x="60" y="132">protection</text>
                <text x="132" y="132">check.</text>
                <text x="472" y="132">Increment</text>
                <text x="528" y="132">the</text>
                <text x="568" y="132">nonce</text>
                <text x="40" y="148">Check</text>
                <text x="84" y="148">that</text>
                <text x="120" y="148">rcv</text>
                <text x="448" y="148">Set</text>
                <text x="512" y="148">trans_count</text>
                <text x="576" y="148">and</text>
                <text x="40" y="164">nonce</text>
                <text x="76" y="164">&gt;=</text>
                <text x="112" y="164">local</text>
                <text x="480" y="164">trans_timer</text>
                <text x="40" y="180">nonce</text>
                <text x="72" y="180">+</text>
                <text x="88" y="180">1</text>
                <text x="52" y="212">Confirms</text>
                <text x="104" y="212">the</text>
                <text x="144" y="212">notif</text>
                <text x="32" y="228">and</text>
                <text x="76" y="228">update</text>
                <text x="120" y="228">the</text>
                <text x="276" y="228">Map-Notify-Ack(nonce</text>
                <text x="392" y="228">..)</text>
                <text x="508" y="228">Security/integrity</text>
                <text x="40" y="244">entry</text>
                <text x="476" y="244">protection</text>
                <text x="552" y="244">checks.</text>
                <text x="452" y="260">This</text>
                <text x="524" y="260">notification</text>
                <text x="444" y="276">is</text>
                <text x="472" y="276">now</text>
                <text x="512" y="276">ACKed</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                     +----+
                     |xTR|                     | MS |
                     +-+-+                     +--+-+
                       |                          |
.--------------------. |                          | .--------------------.
| Security/integrity | | Map-Notify(nonce++, ...) | | Update is triggered|
| protection check.  +-+<=========================+-+ Increment the nonce|
| Check that rcv     | |                          | | Set trans_count and|
| nonce >= local     | |                          | | trans_timer        |
| nonce + 1          | |                          | '--------------------'
|                    | |                          |
| Confirms the notif | |                          | .--------------------.
| and update the     | |Map-Notify-Ack(nonce++,..)| | Security/integrity |
| entry              +-+=========================>+-+ protection checks. |
|                    | |                          | | This notification  |
'--------------------' |                          | | is now ACKed       |
                       |                          | '--------------------'
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="successful-notification-with-retransmission">
      <name>Successful Notification with Retransmission</name>
      <t>Unlike the example depicted in <xref target="sn"/>, <xref target="sretrans"/> illustrates the behavior that is experienced  when a subset of Map-Notify messages are lost during their transfer. This example assumes that at least one of these Map-Notify messages is received by the target xTR.</t>
      <figure anchor="sretrans">
        <name>An Example of Successful Notification with Retransmission</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="496" width="584" viewBox="0 0 584 496" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,304 L 8,464" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,304 L 176,464" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,480" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 368,32 L 368,64" fill="none" stroke="black"/>
              <path d="M 392,64 L 392,408" fill="none" stroke="black"/>
              <path d="M 392,424 L 392,480" fill="none" stroke="black"/>
              <path d="M 408,32 L 408,64" fill="none" stroke="black"/>
              <path d="M 408,96 L 408,176" fill="none" stroke="black"/>
              <path d="M 408,208 L 408,272" fill="none" stroke="black"/>
              <path d="M 408,304 L 408,368" fill="none" stroke="black"/>
              <path d="M 408,400 L 408,480" fill="none" stroke="black"/>
              <path d="M 576,96 L 576,176" fill="none" stroke="black"/>
              <path d="M 576,208 L 576,272" fill="none" stroke="black"/>
              <path d="M 576,304 L 576,368" fill="none" stroke="black"/>
              <path d="M 576,400 L 576,480" fill="none" stroke="black"/>
              <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
              <path d="M 368,32 L 408,32" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 368,64 L 408,64" fill="none" stroke="black"/>
              <path d="M 408,96 L 576,96" fill="none" stroke="black"/>
              <path d="M 240,126 L 392,126" fill="none" stroke="black"/>
              <path d="M 240,130 L 392,130" fill="none" stroke="black"/>
              <path d="M 400,128 L 408,128" fill="none" stroke="black"/>
              <path d="M 408,176 L 576,176" fill="none" stroke="black"/>
              <path d="M 408,208 L 576,208" fill="none" stroke="black"/>
              <path d="M 240,238 L 392,238" fill="none" stroke="black"/>
              <path d="M 240,242 L 392,242" fill="none" stroke="black"/>
              <path d="M 400,240 L 408,240" fill="none" stroke="black"/>
              <path d="M 408,272 L 576,272" fill="none" stroke="black"/>
              <path d="M 8,304 L 176,304" fill="none" stroke="black"/>
              <path d="M 408,304 L 576,304" fill="none" stroke="black"/>
              <path d="M 176,336 L 192,336" fill="none" stroke="black"/>
              <path d="M 200,334 L 392,334" fill="none" stroke="black"/>
              <path d="M 200,338 L 392,338" fill="none" stroke="black"/>
              <path d="M 400,336 L 408,336" fill="none" stroke="black"/>
              <path d="M 408,368 L 576,368" fill="none" stroke="black"/>
              <path d="M 408,400 L 576,400" fill="none" stroke="black"/>
              <path d="M 176,432 L 192,432" fill="none" stroke="black"/>
              <path d="M 200,430 L 384,430" fill="none" stroke="black"/>
              <path d="M 200,434 L 384,434" fill="none" stroke="black"/>
              <path d="M 392,432 L 408,432" fill="none" stroke="black"/>
              <path d="M 8,464 L 176,464" fill="none" stroke="black"/>
              <path d="M 408,480 L 576,480" fill="none" stroke="black"/>
              <path class="jump" d="M 392,424 C 398,424 398,408 392,408" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="392,432 380,426.4 380,437.6" fill="black" transform="rotate(0,384,432)"/>
              <polygon class="arrowhead" points="248,240 236,234.4 236,245.6" fill="black" transform="rotate(180,240,240)"/>
              <polygon class="arrowhead" points="248,128 236,122.4 236,133.6" fill="black" transform="rotate(180,240,128)"/>
              <polygon class="arrowhead" points="208,336 196,330.4 196,341.6" fill="black" transform="rotate(180,200,336)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="388" y="52">MS</text>
                <text x="272" y="116">Map-Notify(nonce,</text>
                <text x="364" y="116">...)</text>
                <text x="444" y="116">Update</text>
                <text x="484" y="116">is</text>
                <text x="536" y="116">triggered</text>
                <text x="456" y="132">Increment</text>
                <text x="512" y="132">the</text>
                <text x="552" y="132">nonce</text>
                <text x="432" y="148">Set</text>
                <text x="496" y="148">trans_count</text>
                <text x="560" y="148">and</text>
                <text x="464" y="164">trans_timer</text>
                <text x="272" y="228">Map-Notify(nonce,</text>
                <text x="364" y="228">...)</text>
                <text x="456" y="228">Increment</text>
                <text x="464" y="244">trans_count</text>
                <text x="528" y="244">and</text>
                <text x="440" y="260">reset</text>
                <text x="512" y="260">trans_timer</text>
                <text x="92" y="324">Security/integrity</text>
                <text x="264" y="324">Map-Notify(nonce,</text>
                <text x="356" y="324">...)</text>
                <text x="456" y="324">Increment</text>
                <text x="60" y="340">protection</text>
                <text x="132" y="340">check.</text>
                <text x="464" y="340">trans_count</text>
                <text x="528" y="340">and</text>
                <text x="40" y="356">Check</text>
                <text x="84" y="356">that</text>
                <text x="120" y="356">rcv</text>
                <text x="440" y="356">reset</text>
                <text x="512" y="356">trans_timer</text>
                <text x="40" y="372">nonce</text>
                <text x="76" y="372">&gt;=</text>
                <text x="112" y="372">local</text>
                <text x="40" y="388">nonce</text>
                <text x="72" y="388">+</text>
                <text x="88" y="388">1</text>
                <text x="52" y="420">Confirms</text>
                <text x="104" y="420">the</text>
                <text x="144" y="420">notif</text>
                <text x="292" y="420">Map-Notify-Ack(nonce,...</text>
                <text x="492" y="420">Security/integrity</text>
                <text x="32" y="436">and</text>
                <text x="76" y="436">update</text>
                <text x="120" y="436">the</text>
                <text x="460" y="436">protection</text>
                <text x="536" y="436">checks.</text>
                <text x="40" y="452">entry</text>
                <text x="436" y="452">This</text>
                <text x="508" y="452">notification</text>
                <text x="428" y="468">is</text>
                <text x="456" y="468">now</text>
                <text x="496" y="468">ACKed</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                   +----+
                     |xTR|                   | MS |
                     +-+-+                   +--+-+
                       |                        |
                       |                        | .--------------------.
                       | Map-Notify(nonce, ...) | | Update is triggered|
                       |     <==================+-+ Increment the nonce|
                       |                        | | Set trans_count and|
                       |                        | | trans_timer        |
                       |                        | '--------------------'
                       |                        |
                       |                        | .--------------------.
                       | Map-Notify(nonce, ...) | | Increment          |
                       |     <==================+-+ trans_count and    |
                       |                        | | reset trans_timer  |
                       |                        | '--------------------'
                       |                        |
.--------------------. |                        | .--------------------.
| Security/integrity | |Map-Notify(nonce, ...)  | | Increment          |
| protection check.  +-+<=======================+-+ trans_count and    |
| Check that rcv     | |                        | | reset trans_timer  |
| nonce >= local     | |                        | '--------------------'
| nonce + 1          | |                        |
|                    | |                        | .--------------------.
| Confirms the notif | |Map-Notify-Ack(nonce,...) | Security/integrity |
| and update the     +-+=======================>+-+ protection checks. |
| entry              | |                        | | This notification  |
'--------------------' |                        | | is now ACKed       |
                       |                        | '--------------------'
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="failed-notification-with-retransmission">
      <name>Failed Notification with Retransmission</name>
      <t><xref target="fretrans"/> assumes that, due to network conditions, all Map-Notifies are lost.</t>
      <figure anchor="fretrans">
        <name>An Example of Failed Notification Delivery</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="472" viewBox="0 0 472 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 24,64 L 24,368" fill="none" stroke="black"/>
              <path d="M 40,32 L 40,64" fill="none" stroke="black"/>
              <path d="M 256,32 L 256,64" fill="none" stroke="black"/>
              <path d="M 280,64 L 280,368" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,64" fill="none" stroke="black"/>
              <path d="M 296,96 L 296,176" fill="none" stroke="black"/>
              <path d="M 296,208 L 296,272" fill="none" stroke="black"/>
              <path d="M 296,304 L 296,368" fill="none" stroke="black"/>
              <path d="M 464,96 L 464,176" fill="none" stroke="black"/>
              <path d="M 464,208 L 464,272" fill="none" stroke="black"/>
              <path d="M 464,304 L 464,368" fill="none" stroke="black"/>
              <path d="M 8,32 L 40,32" fill="none" stroke="black"/>
              <path d="M 256,32 L 296,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 40,64" fill="none" stroke="black"/>
              <path d="M 256,64 L 296,64" fill="none" stroke="black"/>
              <path d="M 296,96 L 464,96" fill="none" stroke="black"/>
              <path d="M 128,126 L 280,126" fill="none" stroke="black"/>
              <path d="M 128,130 L 280,130" fill="none" stroke="black"/>
              <path d="M 288,128 L 296,128" fill="none" stroke="black"/>
              <path d="M 296,176 L 464,176" fill="none" stroke="black"/>
              <path d="M 296,208 L 464,208" fill="none" stroke="black"/>
              <path d="M 128,238 L 280,238" fill="none" stroke="black"/>
              <path d="M 128,242 L 280,242" fill="none" stroke="black"/>
              <path d="M 288,240 L 296,240" fill="none" stroke="black"/>
              <path d="M 296,272 L 464,272" fill="none" stroke="black"/>
              <path d="M 296,304 L 464,304" fill="none" stroke="black"/>
              <path d="M 128,334 L 280,334" fill="none" stroke="black"/>
              <path d="M 128,338 L 280,338" fill="none" stroke="black"/>
              <path d="M 288,336 L 296,336" fill="none" stroke="black"/>
              <path d="M 296,368 L 464,368" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="136,336 124,330.4 124,341.6" fill="black" transform="rotate(180,128,336)"/>
              <polygon class="arrowhead" points="136,240 124,234.4 124,245.6" fill="black" transform="rotate(180,128,240)"/>
              <polygon class="arrowhead" points="136,128 124,122.4 124,133.6" fill="black" transform="rotate(180,128,128)"/>
              <g class="text">
                <text x="24" y="52">xTR</text>
                <text x="276" y="52">MS</text>
                <text x="160" y="116">Map-Notify(nonce,</text>
                <text x="252" y="116">...)</text>
                <text x="332" y="116">Update</text>
                <text x="372" y="116">is</text>
                <text x="424" y="116">triggered</text>
                <text x="344" y="132">Increment</text>
                <text x="400" y="132">the</text>
                <text x="440" y="132">nonce</text>
                <text x="320" y="148">Set</text>
                <text x="384" y="148">trans_count</text>
                <text x="448" y="148">and</text>
                <text x="352" y="164">trans_timer</text>
                <text x="160" y="228">Map-Notify(nonce,</text>
                <text x="252" y="228">...)</text>
                <text x="344" y="228">Increment</text>
                <text x="352" y="244">trans_count</text>
                <text x="416" y="244">and</text>
                <text x="328" y="260">reset</text>
                <text x="400" y="260">trans_timer</text>
                <text x="160" y="324">Map-Notify(nonce,</text>
                <text x="252" y="324">...)</text>
                <text x="344" y="324">Increment</text>
                <text x="352" y="340">trans_count</text>
                <text x="416" y="340">and</text>
                <text x="328" y="356">reset</text>
                <text x="400" y="356">trans_timer</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
              +---+                          +----+
              |xTR|                          | MS |
              +-+-+                          +--+-+
                |                               |
                |                               | .--------------------.
                |        Map-Notify(nonce, ...) | | Update is triggered|
                |            <==================+-+ Increment the nonce|
                |                               | | Set trans_count and|
                |                               | | trans_timer        |
                |                               | '--------------------'
                |                               |
                |                               | .--------------------.
                |        Map-Notify(nonce, ...) | | Increment          |
                |            <==================+-+ trans_count and    |
                |                               | | reset trans_timer  |
                |                               | '--------------------'
                |                               |
                |                               | .--------------------.
                |        Map-Notify(nonce, ...) | | Increment          |
                |            <==================+-+ trans_count and    |
                |                               | | reset trans_timer  |
                |                               | '--------------------'
]]></artwork>
        </artset>
      </figure>
      <t>Note that no specific action is currently specified in <xref target="I-D.ietf-lisp-pubsub"/> when such a failure occurs. That is, the entry is kept active and future updates will trigger new Map-Notify cycles. Also, the current specification does not recommend a behavior (e.g., regular refreshes) so that the xTR avoids maintaining stale mappings. Such details are implementation specific (see, for example, <xref target="sec-sub-update"/>). In order to accommodate Map-Notify message lost, the nonce checks on the xTR should not be on the exact match vs "nonce + 1"; messages with  "received nonce &gt;= local nonce + 1" should be accepted.</t>
    </section>
    <section anchor="sec-sub-update">
      <name>Successful Subscription Update</name>
      <t><xref target="ssu"/> illustrates the example of successful update of an existing subscription. The triggers for such a refresh are implementation specific.</t>
      <figure anchor="ssu">
        <name>An Example of Successful Subscription Update</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="600" viewBox="0 0 600 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,96 L 8,144" fill="none" stroke="black"/>
              <path d="M 8,176 L 8,288" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,96 L 176,144" fill="none" stroke="black"/>
              <path d="M 176,176 L 176,288" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,336" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 384,32 L 384,64" fill="none" stroke="black"/>
              <path d="M 408,64 L 408,240" fill="none" stroke="black"/>
              <path d="M 408,272 L 408,336" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
              <path d="M 424,96 L 424,224" fill="none" stroke="black"/>
              <path d="M 424,272 L 424,336" fill="none" stroke="black"/>
              <path d="M 592,96 L 592,224" fill="none" stroke="black"/>
              <path d="M 592,272 L 592,336" fill="none" stroke="black"/>
              <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
              <path d="M 384,32 L 424,32" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 384,64 L 424,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
              <path d="M 424,96 L 592,96" fill="none" stroke="black"/>
              <path d="M 176,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 200,126 L 400,126" fill="none" stroke="black"/>
              <path d="M 200,130 L 400,130" fill="none" stroke="black"/>
              <path d="M 408,128 L 424,128" fill="none" stroke="black"/>
              <path d="M 8,144 L 176,144" fill="none" stroke="black"/>
              <path d="M 8,176 L 176,176" fill="none" stroke="black"/>
              <path d="M 176,192 L 192,192" fill="none" stroke="black"/>
              <path d="M 200,190 L 408,190" fill="none" stroke="black"/>
              <path d="M 200,194 L 408,194" fill="none" stroke="black"/>
              <path d="M 416,192 L 424,192" fill="none" stroke="black"/>
              <path d="M 424,224 L 592,224" fill="none" stroke="black"/>
              <path d="M 424,256 L 576,256" fill="none" stroke="black"/>
              <path d="M 176,272 L 192,272" fill="none" stroke="black"/>
              <path d="M 200,270 L 400,270" fill="none" stroke="black"/>
              <path d="M 200,274 L 400,274" fill="none" stroke="black"/>
              <path d="M 416,272 L 424,272" fill="none" stroke="black"/>
              <path d="M 8,288 L 176,288" fill="none" stroke="black"/>
              <path d="M 424,336 L 592,336" fill="none" stroke="black"/>
              <path d="M 424,256 C 415.16936,256 408,263.16936 408,272" fill="none" stroke="black"/>
              <path d="M 576,256 C 584.83064,256 592,263.16936 592,272" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="408,272 396,266.4 396,277.6" fill="black" transform="rotate(0,400,272)"/>
              <polygon class="arrowhead" points="408,128 396,122.4 396,133.6" fill="black" transform="rotate(0,400,128)"/>
              <polygon class="arrowhead" points="208,192 196,186.4 196,197.6" fill="black" transform="rotate(180,200,192)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="404" y="52">MS</text>
                <text x="56" y="116">Increment</text>
                <text x="112" y="116">the</text>
                <text x="148" y="116">last</text>
                <text x="276" y="116">Map-Request(nonce,</text>
                <text x="372" y="116">...)</text>
                <text x="508" y="116">Security/integrity</text>
                <text x="36" y="132">seen</text>
                <text x="80" y="132">nonce</text>
                <text x="476" y="132">protection</text>
                <text x="548" y="132">check.</text>
                <text x="456" y="148">Found</text>
                <text x="492" y="148">an</text>
                <text x="528" y="148">entry</text>
                <text x="568" y="148">for</text>
                <text x="452" y="164">this</text>
                <text x="500" y="164">xTR-ID</text>
                <text x="288" y="180">Map-Notify(nonce,...)</text>
                <text x="456" y="180">Check</text>
                <text x="500" y="180">that</text>
                <text x="536" y="180">rcv</text>
                <text x="92" y="196">Security/integrity</text>
                <text x="456" y="196">nonce</text>
                <text x="492" y="196">&gt;=</text>
                <text x="528" y="196">local</text>
                <text x="60" y="212">protection</text>
                <text x="132" y="212">check.</text>
                <text x="456" y="212">nonce</text>
                <text x="488" y="212">+</text>
                <text x="504" y="212">1</text>
                <text x="40" y="228">Check</text>
                <text x="84" y="228">that</text>
                <text x="120" y="228">rcv</text>
                <text x="40" y="244">nonce</text>
                <text x="76" y="244">==</text>
                <text x="104" y="244">snd</text>
                <text x="144" y="244">nonce</text>
                <text x="48" y="260">Confirm</text>
                <text x="96" y="260">the</text>
                <text x="128" y="260">sub</text>
                <text x="160" y="260">and</text>
                <text x="304" y="260">Map-Notify-Ack(nonce,...)</text>
                <text x="36" y="276">wait</text>
                <text x="72" y="276">for</text>
                <text x="116" y="276">notifs</text>
                <text x="508" y="276">Security/integrity</text>
                <text x="476" y="292">protection</text>
                <text x="548" y="292">check.</text>
                <text x="452" y="308">This</text>
                <text x="524" y="308">subscription</text>
                <text x="460" y="324">update</text>
                <text x="500" y="324">is</text>
                <text x="536" y="324">ACKed</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                     +----+
                     |xTR|                     | MS |
                     +-+-+                     +--+-+
                       |                          |
.--------------------. |                          | .--------------------.
| Increment the last | | Map-Request(nonce, ...)  | | Security/integrity |
| seen nonce         +-+=========================>+-+ protection check.  |
'--------------------' |                          | | Found an entry for |
                       |                          | | this xTR-ID        |
.--------------------. | Map-Notify(nonce,...)    | | Check that rcv     |
| Security/integrity +-+<=========================+-+ nonce >= local     |
| protection check.  | |                          | | nonce + 1          |
| Check that rcv     | |                          | '--------------------'
| nonce == snd nonce | |                          |
| Confirm the sub and| | Map-Notify-Ack(nonce,...) .--------------------.
| wait for notifs    +-+=========================>+-+ Security/integrity |
'--------------------' |                          | | protection check.  |
                       |                          | | This subscription  |
                       |                          | | update is ACKed    |
                       |                          | '--------------------'
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="failed-subscription-with-lost-map-notify-ack">
      <name>Failed Subscription with Lost Map-Notify-Ack</name>
      <t>This example is similar to <xref target="sec-iss"/>, except that the Map-Notify-Ack is not delivered to the Map-Server. The Map-Server retransmits the Map-Notify 3 times, and then removes the subscription. A Map-Notify to explicitly indicate the reason for such a removal is also generated by the Map-Server. If the xTR receives this Map-Notify, the xTR may decide to send the Map-Request to reinstall back the removed state. The procedure to reinstall the state is similar to <xref target="iss"/>.</t>
      <figure anchor="fiss">
        <name>An Example of Failed Initial Subscription</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="640" viewBox="0 0 640 624" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,96 L 8,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 8,336" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,96 L 176,192" fill="none" stroke="black"/>
              <path d="M 176,224 L 176,336" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,600" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
              <path d="M 448,64 L 448,608" fill="none" stroke="black"/>
              <path d="M 464,32 L 464,64" fill="none" stroke="black"/>
              <path d="M 464,112 L 464,272" fill="none" stroke="black"/>
              <path d="M 464,352 L 464,416" fill="none" stroke="black"/>
              <path d="M 464,448 L 464,512" fill="none" stroke="black"/>
              <path d="M 464,544 L 464,592" fill="none" stroke="black"/>
              <path d="M 632,112 L 632,272" fill="none" stroke="black"/>
              <path d="M 632,352 L 632,416" fill="none" stroke="black"/>
              <path d="M 632,448 L 632,512" fill="none" stroke="black"/>
              <path d="M 632,544 L 632,592" fill="none" stroke="black"/>
              <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
              <path d="M 424,32 L 464,32" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 424,64 L 464,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
              <path d="M 464,112 L 632,112" fill="none" stroke="black"/>
              <path d="M 176,144 L 192,144" fill="none" stroke="black"/>
              <path d="M 200,142 L 440,142" fill="none" stroke="black"/>
              <path d="M 200,146 L 440,146" fill="none" stroke="black"/>
              <path d="M 448,144 L 464,144" fill="none" stroke="black"/>
              <path d="M 8,192 L 176,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 176,224" fill="none" stroke="black"/>
              <path d="M 176,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 200,238 L 448,238" fill="none" stroke="black"/>
              <path d="M 200,242 L 448,242" fill="none" stroke="black"/>
              <path d="M 456,240 L 464,240" fill="none" stroke="black"/>
              <path d="M 464,272 L 632,272" fill="none" stroke="black"/>
              <path d="M 176,304 L 192,304" fill="none" stroke="black"/>
              <path d="M 200,302 L 288,302" fill="none" stroke="black"/>
              <path d="M 200,306 L 288,306" fill="none" stroke="black"/>
              <path d="M 8,336 L 176,336" fill="none" stroke="black"/>
              <path d="M 464,352 L 632,352" fill="none" stroke="black"/>
              <path d="M 296,382 L 448,382" fill="none" stroke="black"/>
              <path d="M 296,386 L 448,386" fill="none" stroke="black"/>
              <path d="M 456,384 L 464,384" fill="none" stroke="black"/>
              <path d="M 464,416 L 632,416" fill="none" stroke="black"/>
              <path d="M 464,448 L 632,448" fill="none" stroke="black"/>
              <path d="M 296,478 L 448,478" fill="none" stroke="black"/>
              <path d="M 296,482 L 448,482" fill="none" stroke="black"/>
              <path d="M 456,480 L 464,480" fill="none" stroke="black"/>
              <path d="M 464,512 L 632,512" fill="none" stroke="black"/>
              <path d="M 464,544 L 632,544" fill="none" stroke="black"/>
              <path d="M 240,574 L 448,574" fill="none" stroke="black"/>
              <path d="M 240,578 L 448,578" fill="none" stroke="black"/>
              <path d="M 456,576 L 464,576" fill="none" stroke="black"/>
              <path d="M 464,592 L 632,592" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="448,144 436,138.4 436,149.6" fill="black" transform="rotate(0,440,144)"/>
              <polygon class="arrowhead" points="304,480 292,474.4 292,485.6" fill="black" transform="rotate(180,296,480)"/>
              <polygon class="arrowhead" points="304,384 292,378.4 292,389.6" fill="black" transform="rotate(180,296,384)"/>
              <polygon class="arrowhead" points="296,304 284,298.4 284,309.6" fill="black" transform="rotate(0,288,304)"/>
              <polygon class="arrowhead" points="248,576 236,570.4 236,581.6" fill="black" transform="rotate(180,240,576)"/>
              <polygon class="arrowhead" points="208,240 196,234.4 196,245.6" fill="black" transform="rotate(180,200,240)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="444" y="52">MS</text>
                <text x="52" y="116">Generate</text>
                <text x="96" y="116">a</text>
                <text x="120" y="116">new</text>
                <text x="152" y="116">key</text>
                <text x="296" y="116">Map-Request(init_nonce,</text>
                <text x="32" y="132">and</text>
                <text x="60" y="132">an</text>
                <text x="104" y="132">initial</text>
                <text x="352" y="132">init_key_id,..)</text>
                <text x="548" y="132">Security/integrity</text>
                <text x="44" y="148">nonce.</text>
                <text x="96" y="148">Store</text>
                <text x="140" y="148">them</text>
                <text x="516" y="148">protection</text>
                <text x="588" y="148">check.</text>
                <text x="48" y="164">locally</text>
                <text x="96" y="164">for</text>
                <text x="132" y="164">this</text>
                <text x="484" y="164">No</text>
                <text x="520" y="164">State</text>
                <text x="560" y="164">for</text>
                <text x="596" y="164">this</text>
                <text x="68" y="180">subscription</text>
                <text x="516" y="180">xTR-ID/EID</text>
                <text x="572" y="180">is</text>
                <text x="608" y="180">found</text>
                <text x="500" y="196">Create</text>
                <text x="544" y="196">the</text>
                <text x="576" y="196">sub</text>
                <text x="608" y="196">and</text>
                <text x="496" y="212">store</text>
                <text x="568" y="212">init_nonce,</text>
                <text x="308" y="228">Map-Notify(init_nonce,...)</text>
                <text x="524" y="228">init_key_id,</text>
                <text x="592" y="228">...</text>
                <text x="92" y="244">Security/integrity</text>
                <text x="488" y="244">Set</text>
                <text x="552" y="244">trans_count</text>
                <text x="616" y="244">and</text>
                <text x="60" y="260">protection</text>
                <text x="132" y="260">check.</text>
                <text x="520" y="260">trans_timer</text>
                <text x="40" y="276">Check</text>
                <text x="84" y="276">that</text>
                <text x="120" y="276">rcv</text>
                <text x="40" y="292">nonce</text>
                <text x="76" y="292">==</text>
                <text x="132" y="292">init_nonce</text>
                <text x="324" y="292">Map-Notify-Ack(init_nonce,...)</text>
                <text x="48" y="308">Confirm</text>
                <text x="96" y="308">the</text>
                <text x="128" y="308">sub</text>
                <text x="160" y="308">and</text>
                <text x="36" y="324">wait</text>
                <text x="72" y="324">for</text>
                <text x="116" y="324">notifs</text>
                <text x="328" y="372">Map-Notify(nonce,</text>
                <text x="420" y="372">...)</text>
                <text x="512" y="372">Increment</text>
                <text x="520" y="388">trans_count</text>
                <text x="584" y="388">and</text>
                <text x="496" y="404">reset</text>
                <text x="568" y="404">trans_timer</text>
                <text x="328" y="468">Map-Notify(nonce,</text>
                <text x="420" y="468">...)</text>
                <text x="512" y="468">Increment</text>
                <text x="520" y="484">trans_count</text>
                <text x="584" y="484">and</text>
                <text x="496" y="500">reset</text>
                <text x="568" y="500">trans_timer</text>
                <text x="264" y="564">Map-Notify(nonce,</text>
                <text x="356" y="564">AFI,</text>
                <text x="412" y="564">ACT,...)</text>
                <text x="500" y="564">Remove</text>
                <text x="544" y="564">the</text>
                <text x="596" y="564">subscri-</text>
                <text x="496" y="580">ption</text>
                <text x="192" y="612">...</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     |xTR|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
.--------------------. |                               |
| Generate a new key | | Map-Request(init_nonce,       | .--------------------.
| and an initial     | |            init_key_id,..)    | | Security/integrity |
| nonce. Store them  +-+==============================>+-+ protection check.  |
| locally for this   | |                               | | No State for this  |
| subscription       | |                               | | xTR-ID/EID is found|
'--------------------' |                               | | Create the sub and |
                       |                               | | store init_nonce,  |
.--------------------. | Map-Notify(init_nonce,...)    | | init_key_id, ...   |
| Security/integrity +-+<==============================+-+ Set trans_count and|
| protection check.  | |                               | | trans_timer        |
| Check that rcv     | |                               | '--------------------'
| nonce == init_nonce| | Map-Notify-Ack(init_nonce,...)|
| Confirm the sub and+-+===========>                   |
| wait for notifs    | |                               |
'--------------------' |                               |
                       |                               | .--------------------.
                       |        Map-Notify(nonce, ...) | | Increment          |
                       |            <==================+-+ trans_count and    |
                       |                               | | reset trans_timer  |
                       |                               | '--------------------'
                       |                               |
                       |                               | .--------------------.
                       |        Map-Notify(nonce, ...) | | Increment          |
                       |            <==================+-+ trans_count and    |
                       |                               | | reset trans_timer  |
                       |                               | '--------------------'
                       |                               |
                       |                               | .--------------------.
                       |Map-Notify(nonce, AFI, ACT,...)| | Remove the subscri-|
                       |     <=========================+-+ ption              |
                       |                               | '--------------------'
                      ...                              |
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="bootstrapping-an-xtr">
      <name>Bootstrapping an xTR</name>
      <t>When first bootrsapped, an xTR may delete any (stale) state that might be associated with its provisioned xTR-ID and security association. To that aim, the xTR sends a Map-Request that has only one ITR-RLOC with AFI = 0.</t>
      <t>A Map-Notify will be sent back by the Map-Server even if no subscription is found.</t>
    </section>
    <section anchor="stale-subscriptions">
      <name>Stale Subscriptions</name>
      <t>For various reasons, an xTR may lose its subscriptions (or at least the nonce of a subscription). Note that losing the nonce is not compliant with the following from the PubSub specification:</t>
      <ul empty="true">
        <li>
          <t>The xTR MUST keep track of the last nonce seen in a Map-Notify received as a publication from the Map-Server for the EID-Record.</t>
        </li>
      </ul>
      <t>If the same key is used, the Map-Request is likely to be rejected by the Map-Server and, thus, stale subscriptions will be maintained by the Map-Server. The request is silently discarded by the Map-Server. This behavior is similar to thsi behavior in <xref target="RFC9301"/>:</t>
      <ul empty="true">
        <li>
          <t>If a Map-Register is received with a nonce value that is not greater than the saved nonce, it MUST drop the Map-Register message and SHOULD log the fact that a replay attack could have occurred.</t>
        </li>
      </ul>
      <figure anchor="stale">
        <name>An Example of Stale Subscriptions</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="472" viewBox="0 0 472 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 24,64 L 24,240" fill="none" stroke="black"/>
              <path d="M 40,32 L 40,64" fill="none" stroke="black"/>
              <path d="M 256,32 L 256,64" fill="none" stroke="black"/>
              <path d="M 280,64 L 280,240" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,64" fill="none" stroke="black"/>
              <path d="M 296,96 L 296,240" fill="none" stroke="black"/>
              <path d="M 464,96 L 464,240" fill="none" stroke="black"/>
              <path d="M 8,32 L 40,32" fill="none" stroke="black"/>
              <path d="M 256,32 L 296,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 40,64" fill="none" stroke="black"/>
              <path d="M 256,64 L 296,64" fill="none" stroke="black"/>
              <path d="M 296,96 L 464,96" fill="none" stroke="black"/>
              <path d="M 24,126 L 272,126" fill="none" stroke="black"/>
              <path d="M 24,130 L 272,130" fill="none" stroke="black"/>
              <path d="M 280,128 L 296,128" fill="none" stroke="black"/>
              <path d="M 296,240 L 464,240" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="280,128 268,122.4 268,133.6" fill="black" transform="rotate(0,272,128)"/>
              <g class="text">
                <text x="24" y="52">xTR</text>
                <text x="276" y="52">MS</text>
                <text x="108" y="100">Map-Request(nonce,</text>
                <text x="184" y="116">init_key_id,..)</text>
                <text x="380" y="116">Security/integrity</text>
                <text x="348" y="132">protection</text>
                <text x="420" y="132">check.</text>
                <text x="312" y="148">A</text>
                <text x="344" y="148">state</text>
                <text x="384" y="148">for</text>
                <text x="348" y="164">xTR-ID/EID</text>
                <text x="404" y="164">is</text>
                <text x="440" y="164">found</text>
                <text x="320" y="180">but</text>
                <text x="352" y="180">the</text>
                <text x="392" y="180">nonce</text>
                <text x="440" y="180">check</text>
                <text x="332" y="196">fails:</text>
                <text x="376" y="196">rcv</text>
                <text x="416" y="196">nonce</text>
                <text x="448" y="196">&lt;</text>
                <text x="328" y="212">local</text>
                <text x="376" y="212">nonce</text>
                <text x="408" y="212">+</text>
                <text x="428" y="212">1.</text>
                <text x="336" y="228">Discard</text>
                <text x="384" y="228">the</text>
                <text x="428" y="228">packet</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     |xTR|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
                       | Map-Request(nonce,            | .--------------------.
                       |            init_key_id,..)    | | Security/integrity |
                       +==============================>+-+ protection check.  |
                       |                               | | A state for        |
                       |                               | | xTR-ID/EID is found|
                       |                               | | but the nonce check|
                       |                               | | fails: rcv nonce < |
                       |                               | | local nonce + 1.   |
                       |                               | | Discard the packet |
                       |                               | '--------------------'
]]></artwork>
        </artset>
      </figure>
      <t>If the Map-Server stores all the key-ids that were used by an xTR for its subscriptions, the Map-Server may accept overriding an existing state without enforcing the nonce check but if and only if a new key is used (see <xref target="stale-new-key"/>).</t>
      <figure anchor="stale-new-key">
        <name>An Example of Stale Subscriptions Avoidance with New KEys</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="472" viewBox="0 0 472 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 24,64 L 24,224" fill="none" stroke="black"/>
              <path d="M 40,32 L 40,64" fill="none" stroke="black"/>
              <path d="M 256,32 L 256,64" fill="none" stroke="black"/>
              <path d="M 280,64 L 280,224" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,64" fill="none" stroke="black"/>
              <path d="M 296,96 L 296,224" fill="none" stroke="black"/>
              <path d="M 464,96 L 464,224" fill="none" stroke="black"/>
              <path d="M 8,32 L 40,32" fill="none" stroke="black"/>
              <path d="M 256,32 L 296,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 40,64" fill="none" stroke="black"/>
              <path d="M 256,64 L 296,64" fill="none" stroke="black"/>
              <path d="M 296,96 L 464,96" fill="none" stroke="black"/>
              <path d="M 24,126 L 272,126" fill="none" stroke="black"/>
              <path d="M 24,130 L 272,130" fill="none" stroke="black"/>
              <path d="M 280,128 L 296,128" fill="none" stroke="black"/>
              <path d="M 32,174 L 280,174" fill="none" stroke="black"/>
              <path d="M 32,178 L 280,178" fill="none" stroke="black"/>
              <path d="M 288,176 L 296,176" fill="none" stroke="black"/>
              <path d="M 296,224 L 464,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="280,128 268,122.4 268,133.6" fill="black" transform="rotate(0,272,128)"/>
              <polygon class="arrowhead" points="40,176 28,170.4 28,181.6" fill="black" transform="rotate(180,32,176)"/>
              <g class="text">
                <text x="24" y="52">xTR</text>
                <text x="276" y="52">MS</text>
                <text x="108" y="100">Map-Request(nonce,</text>
                <text x="136" y="116">new</text>
                <text x="184" y="116">key_id,</text>
                <text x="236" y="116">...)</text>
                <text x="380" y="116">Security/integrity</text>
                <text x="348" y="132">protection</text>
                <text x="420" y="132">check.</text>
                <text x="312" y="148">A</text>
                <text x="344" y="148">state</text>
                <text x="384" y="148">for</text>
                <text x="76" y="164">Map-Notify</text>
                <text x="152" y="164">(nonce,</text>
                <text x="204" y="164">...)</text>
                <text x="348" y="164">xTR-ID/EID</text>
                <text x="404" y="164">is</text>
                <text x="440" y="164">found</text>
                <text x="320" y="180">but</text>
                <text x="352" y="180">the</text>
                <text x="384" y="180">new</text>
                <text x="420" y="180">auth</text>
                <text x="320" y="196">key</text>
                <text x="348" y="196">is</text>
                <text x="384" y="196">used,</text>
                <text x="424" y="196">the</text>
                <text x="328" y="212">state</text>
                <text x="364" y="212">is</text>
                <text x="408" y="212">updated</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     |xTR|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
                       | Map-Request(nonce,            | .--------------------.
                       |            new key_id, ...)   | | Security/integrity |
                       +==============================>+-+ protection check.  |
                       |                               | | A state for        |
                       | Map-Notify (nonce, ...)       | | xTR-ID/EID is found|
                       |<==============================+-+ but the new auth   |
                       |                               | | key is used, the   |
                       |                               | | state is updated   |
                       |                               | '--------------------'
]]></artwork>
        </artset>
      </figure>
      <t>However, the approach in <xref target="stale-new-key"/> may have scalability issues as the Map-Server must store all the key identifiers that were ever used. Otherwise, an attacker can replay a message for which the key-id is not stored anymore by the Map-Server. This issue is not encountered if LISP-SEC messages are timestamped.</t>
      <ul empty="true">
        <li>
          <t>Note that currently none of LISP specifications use timestamps.</t>
        </li>
      </ul>
    </section>
    <section anchor="xtr-triggered-subscription-withdrawal">
      <name>xTR-triggered Subscription Withdrawal</name>
      <t><xref target="xmd"/> illustrates the observed exchange to successfully delete a subscription.</t>
      <figure anchor="xmd">
        <name>An Example of Successful Subscription Withdrawal</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="640" viewBox="0 0 640 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,96 L 8,144" fill="none" stroke="black"/>
              <path d="M 8,176 L 8,288" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,96 L 176,144" fill="none" stroke="black"/>
              <path d="M 176,176 L 176,288" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,336" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
              <path d="M 448,64 L 448,336" fill="none" stroke="black"/>
              <path d="M 464,32 L 464,64" fill="none" stroke="black"/>
              <path d="M 464,96 L 464,224" fill="none" stroke="black"/>
              <path d="M 464,256 L 464,336" fill="none" stroke="black"/>
              <path d="M 632,96 L 632,224" fill="none" stroke="black"/>
              <path d="M 632,256 L 632,336" fill="none" stroke="black"/>
              <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
              <path d="M 424,32 L 464,32" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 424,64 L 464,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
              <path d="M 464,96 L 632,96" fill="none" stroke="black"/>
              <path d="M 176,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 200,126 L 440,126" fill="none" stroke="black"/>
              <path d="M 200,130 L 440,130" fill="none" stroke="black"/>
              <path d="M 448,128 L 464,128" fill="none" stroke="black"/>
              <path d="M 8,144 L 176,144" fill="none" stroke="black"/>
              <path d="M 8,176 L 176,176" fill="none" stroke="black"/>
              <path d="M 176,192 L 192,192" fill="none" stroke="black"/>
              <path d="M 200,190 L 448,190" fill="none" stroke="black"/>
              <path d="M 200,194 L 448,194" fill="none" stroke="black"/>
              <path d="M 456,192 L 464,192" fill="none" stroke="black"/>
              <path d="M 464,224 L 632,224" fill="none" stroke="black"/>
              <path d="M 464,256 L 632,256" fill="none" stroke="black"/>
              <path d="M 176,272 L 192,272" fill="none" stroke="black"/>
              <path d="M 200,270 L 440,270" fill="none" stroke="black"/>
              <path d="M 200,274 L 440,274" fill="none" stroke="black"/>
              <path d="M 448,272 L 464,272" fill="none" stroke="black"/>
              <path d="M 8,288 L 176,288" fill="none" stroke="black"/>
              <path d="M 464,336 L 632,336" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="448,272 436,266.4 436,277.6" fill="black" transform="rotate(0,440,272)"/>
              <polygon class="arrowhead" points="448,128 436,122.4 436,133.6" fill="black" transform="rotate(0,440,128)"/>
              <polygon class="arrowhead" points="208,192 196,186.4 196,197.6" fill="black" transform="rotate(180,200,192)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="444" y="52">MS</text>
                <text x="56" y="116">Increment</text>
                <text x="112" y="116">the</text>
                <text x="148" y="116">last</text>
                <text x="276" y="116">Map-Request(nonce,</text>
                <text x="388" y="116">AF=0...)</text>
                <text x="548" y="116">Security/integrity</text>
                <text x="36" y="132">seen</text>
                <text x="80" y="132">nonce</text>
                <text x="516" y="132">protection</text>
                <text x="588" y="132">check.</text>
                <text x="496" y="148">Found</text>
                <text x="532" y="148">an</text>
                <text x="568" y="148">entry</text>
                <text x="608" y="148">for</text>
                <text x="492" y="164">this</text>
                <text x="540" y="164">xTR-ID</text>
                <text x="288" y="180">Map-Notify(nonce,...)</text>
                <text x="496" y="180">Check</text>
                <text x="540" y="180">that</text>
                <text x="576" y="180">rcv</text>
                <text x="92" y="196">Security/integrity</text>
                <text x="496" y="196">nonce</text>
                <text x="532" y="196">&gt;=</text>
                <text x="568" y="196">local</text>
                <text x="60" y="212">protection</text>
                <text x="132" y="212">check.</text>
                <text x="496" y="212">nonce</text>
                <text x="528" y="212">+</text>
                <text x="544" y="212">1</text>
                <text x="40" y="228">Check</text>
                <text x="84" y="228">that</text>
                <text x="120" y="228">rcv</text>
                <text x="40" y="244">nonce</text>
                <text x="76" y="244">==</text>
                <text x="104" y="244">snd</text>
                <text x="144" y="244">nonce</text>
                <text x="36" y="260">Send</text>
                <text x="116" y="260">Map-Notfiy-ACK</text>
                <text x="304" y="260">Map-Notify-Ack(nonce,...)</text>
                <text x="548" y="276">Security/integrity</text>
                <text x="516" y="292">protection</text>
                <text x="588" y="292">check.</text>
                <text x="492" y="308">This</text>
                <text x="556" y="308">withdrawal</text>
                <text x="612" y="308">is</text>
                <text x="512" y="324">confirmed</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     |xTR|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
.--------------------. |                               | .--------------------.
| Increment the last | | Map-Request(nonce, AF=0...)   | | Security/integrity |
| seen nonce         +-+==============================>+-+ protection check.  |
'--------------------' |                               | | Found an entry for |
                       |                               | | this xTR-ID        |
.--------------------. | Map-Notify(nonce,...)         | | Check that rcv     |
| Security/integrity +-+<==============================+-+ nonce >= local     |
| protection check.  | |                               | | nonce + 1          |
| Check that rcv     | |                               | '--------------------'
| nonce == snd nonce | |                               |
| Send Map-Notfiy-ACK| | Map-Notify-Ack(nonce,...)     | .--------------------.
|                    +-+==============================>+-+ Security/integrity |
'--------------------' |                               | | protection check.  |
                       |                               | | This withdrawal is |
                       |                               | | confirmed          |
                       |                               | '--------------------'
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="map-server-triggered-subscription-withdrawal">
      <name>'Map-Server'-triggered Subscription Withdrawal</name>
      <t><xref target="msw"/> illustrates the observed exchange to notify the withdrawal of a subscription at the initiative of the Map-Server.</t>
      <figure anchor="msw">
        <name>An Example of Successful Notification of Subscription withdrawal</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="640" viewBox="0 0 640 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,96 L 8,272" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,96 L 176,272" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,288" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
              <path d="M 448,64 L 448,288" fill="none" stroke="black"/>
              <path d="M 464,32 L 464,64" fill="none" stroke="black"/>
              <path d="M 464,96 L 464,176" fill="none" stroke="black"/>
              <path d="M 464,208 L 464,288" fill="none" stroke="black"/>
              <path d="M 632,96 L 632,176" fill="none" stroke="black"/>
              <path d="M 632,208 L 632,288" fill="none" stroke="black"/>
              <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
              <path d="M 424,32 L 464,32" fill="none" stroke="black"/>
              <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
              <path d="M 424,64 L 464,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
              <path d="M 464,96 L 632,96" fill="none" stroke="black"/>
              <path d="M 176,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 200,126 L 448,126" fill="none" stroke="black"/>
              <path d="M 200,130 L 448,130" fill="none" stroke="black"/>
              <path d="M 456,128 L 464,128" fill="none" stroke="black"/>
              <path d="M 464,176 L 632,176" fill="none" stroke="black"/>
              <path d="M 464,208 L 632,208" fill="none" stroke="black"/>
              <path d="M 176,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 200,238 L 440,238" fill="none" stroke="black"/>
              <path d="M 200,242 L 440,242" fill="none" stroke="black"/>
              <path d="M 448,240 L 464,240" fill="none" stroke="black"/>
              <path d="M 8,272 L 176,272" fill="none" stroke="black"/>
              <path d="M 464,288 L 632,288" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="448,240 436,234.4 436,245.6" fill="black" transform="rotate(0,440,240)"/>
              <polygon class="arrowhead" points="208,128 196,122.4 196,133.6" fill="black" transform="rotate(180,200,128)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="444" y="52">MS</text>
                <text x="92" y="116">Security/integrity</text>
                <text x="272" y="116">Map-Notify(nonce,</text>
                <text x="372" y="116">TTL=0,</text>
                <text x="420" y="116">...)</text>
                <text x="500" y="116">Update</text>
                <text x="540" y="116">is</text>
                <text x="592" y="116">triggered</text>
                <text x="60" y="132">protection</text>
                <text x="132" y="132">check.</text>
                <text x="512" y="132">Increment</text>
                <text x="568" y="132">the</text>
                <text x="608" y="132">nonce</text>
                <text x="40" y="148">Check</text>
                <text x="84" y="148">that</text>
                <text x="120" y="148">rcv</text>
                <text x="488" y="148">Set</text>
                <text x="552" y="148">trans_count</text>
                <text x="616" y="148">and</text>
                <text x="40" y="164">nonce</text>
                <text x="76" y="164">&gt;=</text>
                <text x="112" y="164">local</text>
                <text x="520" y="164">trans_timer</text>
                <text x="40" y="180">nonce</text>
                <text x="72" y="180">+</text>
                <text x="88" y="180">1</text>
                <text x="52" y="212">Confirms</text>
                <text x="104" y="212">the</text>
                <text x="144" y="212">notif</text>
                <text x="32" y="228">and</text>
                <text x="76" y="228">remove</text>
                <text x="120" y="228">the</text>
                <text x="288" y="228">Map-Notify-Ack(nonce,</text>
                <text x="396" y="228">...)</text>
                <text x="548" y="228">Security/integrity</text>
                <text x="40" y="244">entry</text>
                <text x="516" y="244">protection</text>
                <text x="592" y="244">checks.</text>
                <text x="492" y="260">This</text>
                <text x="564" y="260">notification</text>
                <text x="484" y="276">is</text>
                <text x="512" y="276">now</text>
                <text x="552" y="276">ACKed</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     |xTR|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
.--------------------. |                               | .--------------------.
| Security/integrity | | Map-Notify(nonce, TTL=0, ...) | | Update is triggered|
| protection check.  +-+<==============================+-+ Increment the nonce|
| Check that rcv     | |                               | | Set trans_count and|
| nonce >= local     | |                               | | trans_timer        |
| nonce + 1          | |                               | '--------------------'
|                    | |                               |
| Confirms the notif | |                               | .--------------------.
| and remove the     | | Map-Notify-Ack(nonce, ...)    | | Security/integrity |
| entry              +-+==============================>+-+ protection checks. |
|                    | |                               | | This notification  |
'--------------------' |                               | | is now ACKed       |
                       |                               | '--------------------'
]]></artwork>
        </artset>
      </figure>
      <section anchor="replay-attacks">
        <name>Replay Attacks</name>
        <section anchor="replayed-subscription-update">
          <name>Replayed Subscription (Update)</name>
          <t><xref target="riss"/> shows the example of a replayed subscription request. The request will be silently dropped the Map-Server because of nonce check failure.</t>
          <figure anchor="riss">
            <name>An Example of Handling of Replayed Initial Subscription</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="624" viewBox="0 0 624 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                  <path d="M 24,192 L 24,256" fill="none" stroke="black"/>
                  <path d="M 40,160 L 40,192" fill="none" stroke="black"/>
                  <path d="M 160,32 L 160,64" fill="none" stroke="black"/>
                  <path d="M 176,64 L 176,144" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,64" fill="none" stroke="black"/>
                  <path d="M 408,32 L 408,64" fill="none" stroke="black"/>
                  <path d="M 432,64 L 432,256" fill="none" stroke="black"/>
                  <path d="M 448,32 L 448,64" fill="none" stroke="black"/>
                  <path d="M 448,96 L 448,240" fill="none" stroke="black"/>
                  <path d="M 616,96 L 616,240" fill="none" stroke="black"/>
                  <path d="M 160,32 L 192,32" fill="none" stroke="black"/>
                  <path d="M 408,32 L 448,32" fill="none" stroke="black"/>
                  <path d="M 160,64 L 192,64" fill="none" stroke="black"/>
                  <path d="M 408,64 L 448,64" fill="none" stroke="black"/>
                  <path d="M 448,96 L 616,96" fill="none" stroke="black"/>
                  <path d="M 176,126 L 424,126" fill="none" stroke="black"/>
                  <path d="M 176,130 L 424,130" fill="none" stroke="black"/>
                  <path d="M 432,128 L 448,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 40,160" fill="none" stroke="black"/>
                  <path d="M 8,192 L 40,192" fill="none" stroke="black"/>
                  <path d="M 448,240 L 616,240" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="432,128 420,122.4 420,133.6" fill="black" transform="rotate(0,424,128)"/>
                  <g class="text">
                    <text x="180" y="52">AT</text>
                    <text x="428" y="52">MS</text>
                    <text x="280" y="100">Map-Request(init_nonce,</text>
                    <text x="336" y="116">init_key_id,..)</text>
                    <text x="532" y="116">Security/integrity</text>
                    <text x="500" y="132">protection</text>
                    <text x="572" y="132">check.</text>
                    <text x="464" y="148">A</text>
                    <text x="496" y="148">state</text>
                    <text x="532" y="148">is</text>
                    <text x="560" y="148">for</text>
                    <text x="500" y="164">xTR-ID/EID</text>
                    <text x="556" y="164">is</text>
                    <text x="592" y="164">found</text>
                    <text x="24" y="180">xTR</text>
                    <text x="472" y="180">but</text>
                    <text x="504" y="180">the</text>
                    <text x="544" y="180">nonce</text>
                    <text x="592" y="180">check</text>
                    <text x="484" y="196">fails:</text>
                    <text x="528" y="196">rcv</text>
                    <text x="568" y="196">nonce</text>
                    <text x="600" y="196">&lt;</text>
                    <text x="480" y="212">local</text>
                    <text x="528" y="212">nonce</text>
                    <text x="560" y="212">+</text>
                    <text x="580" y="212">1.</text>
                    <text x="488" y="228">Discard</text>
                    <text x="536" y="228">the</text>
                    <text x="580" y="228">packet</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     | AT|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
                       | Map-Request(init_nonce,       | .--------------------.
                       |            init_key_id,..)    | | Security/integrity |
                       +==============================>+-+ protection check.  |
                       |                               | | A state is for     |
  +---+                                                | | xTR-ID/EID is found|
  |xTR|                                                | | but the nonce check|
  +-+-+                                                | | fails: rcv nonce < |
    |                                                  | | local nonce + 1.   |
    |                                                  | | Discard the packet |
    |                                                  | '--------------------'
    |                                                  |
]]></artwork>
            </artset>
          </figure>
          <t>Note that legitimate Map-Requests issued from the authentic xTR may be blocked as a side effect of enforcing a rate-lmit of the replayed messages. An example is shown in <xref target="riss-rate"/>.</t>
          <figure anchor="riss-rate">
            <name>An Example of Handling of Replayed Initial Subscription</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="568" viewBox="0 0 568 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,304 L 8,336" fill="none" stroke="black"/>
                  <path d="M 24,336 L 24,352" fill="none" stroke="black"/>
                  <path d="M 48,304 L 48,336" fill="none" stroke="black"/>
                  <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                  <path d="M 152,64 L 152,288" fill="none" stroke="black"/>
                  <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
                  <path d="M 352,32 L 352,64" fill="none" stroke="black"/>
                  <path d="M 376,64 L 376,368" fill="none" stroke="black"/>
                  <path d="M 392,32 L 392,64" fill="none" stroke="black"/>
                  <path d="M 392,96 L 392,224" fill="none" stroke="black"/>
                  <path d="M 392,256 L 392,304" fill="none" stroke="black"/>
                  <path d="M 392,336 L 392,368" fill="none" stroke="black"/>
                  <path d="M 560,96 L 560,224" fill="none" stroke="black"/>
                  <path d="M 560,256 L 560,304" fill="none" stroke="black"/>
                  <path d="M 560,336 L 560,368" fill="none" stroke="black"/>
                  <path d="M 136,32 L 168,32" fill="none" stroke="black"/>
                  <path d="M 352,32 L 392,32" fill="none" stroke="black"/>
                  <path d="M 136,64 L 168,64" fill="none" stroke="black"/>
                  <path d="M 352,64 L 392,64" fill="none" stroke="black"/>
                  <path d="M 392,96 L 560,96" fill="none" stroke="black"/>
                  <path d="M 152,126 L 368,126" fill="none" stroke="black"/>
                  <path d="M 152,130 L 368,130" fill="none" stroke="black"/>
                  <path d="M 376,128 L 392,128" fill="none" stroke="black"/>
                  <path d="M 152,158 L 368,158" fill="none" stroke="black"/>
                  <path d="M 152,162 L 368,162" fill="none" stroke="black"/>
                  <path d="M 376,160 L 392,160" fill="none" stroke="black"/>
                  <path d="M 392,224 L 560,224" fill="none" stroke="black"/>
                  <path d="M 392,256 L 560,256" fill="none" stroke="black"/>
                  <path d="M 376,272 L 392,272" fill="none" stroke="black"/>
                  <path d="M 8,304 L 48,304" fill="none" stroke="black"/>
                  <path d="M 392,304 L 560,304" fill="none" stroke="black"/>
                  <path d="M 8,336 L 48,336" fill="none" stroke="black"/>
                  <path d="M 392,336 L 560,336" fill="none" stroke="black"/>
                  <path d="M 32,350 L 368,350" fill="none" stroke="black"/>
                  <path d="M 32,354 L 368,354" fill="none" stroke="black"/>
                  <path d="M 376,352 L 392,352" fill="none" stroke="black"/>
                  <path d="M 392,368 L 560,368" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="376,352 364,346.4 364,357.6" fill="black" transform="rotate(0,368,352)"/>
                  <polygon class="arrowhead" points="376,160 364,154.4 364,165.6" fill="black" transform="rotate(0,368,160)"/>
                  <polygon class="arrowhead" points="376,128 364,122.4 364,133.6" fill="black" transform="rotate(0,368,128)"/>
                  <g class="text">
                    <text x="156" y="52">AT</text>
                    <text x="372" y="52">MS</text>
                    <text x="256" y="100">Map-Request(init_nonce,</text>
                    <text x="296" y="116">init_key_id,..)</text>
                    <text x="476" y="116">Security/integrity</text>
                    <text x="444" y="132">protection</text>
                    <text x="516" y="132">check.</text>
                    <text x="264" y="148">...</text>
                    <text x="408" y="148">A</text>
                    <text x="440" y="148">state</text>
                    <text x="476" y="148">is</text>
                    <text x="512" y="148">found</text>
                    <text x="444" y="164">xTR-ID/EID</text>
                    <text x="500" y="164">is</text>
                    <text x="536" y="164">found</text>
                    <text x="416" y="180">but</text>
                    <text x="448" y="180">the</text>
                    <text x="488" y="180">nonce</text>
                    <text x="536" y="180">check</text>
                    <text x="428" y="196">fails:</text>
                    <text x="472" y="196">rcv</text>
                    <text x="512" y="196">nonce</text>
                    <text x="544" y="196">&lt;</text>
                    <text x="424" y="212">local</text>
                    <text x="472" y="212">nonce</text>
                    <text x="504" y="212">+</text>
                    <text x="520" y="212">1</text>
                    <text x="208" y="260">(more</text>
                    <text x="272" y="260">requests)</text>
                    <text x="444" y="276">Rate-limit</text>
                    <text x="516" y="276">xTR-ID</text>
                    <text x="436" y="292">requests</text>
                    <text x="484" y="292">is</text>
                    <text x="528" y="292">reached</text>
                    <text x="24" y="324">xTR</text>
                    <text x="188" y="340">Map-Request(...)</text>
                    <text x="432" y="356">Discard</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                  +---+                      +----+
                  | AT|                      | MS |
                  +-+-+                      +--+-+
                    |                           |
                    | Map-Request(init_nonce,   | .--------------------.
                    |          init_key_id,..)  | | Security/integrity |
                    +==========================>+-+ protection check.  |
                    |            ...            | | A state is found   |
                    +==========================>+-+ xTR-ID/EID is found|
                    |                           | | but the nonce check|
                    |                           | | fails: rcv nonce < |
                    |                           | | local nonce + 1    |
                    |                           | '--------------------'
                    |                           |
                    |    (more requests)        | .--------------------.
                    |                           +-+ Rate-limit xTR-ID  |
                    |                           | | requests is reached|
  +----+                                        | '--------------------'
  |xTR |                                        |
  +-+--+         Map-Request(...)               | .--------------------.
    |==========================================>+-+ Discard            |
                                                | '--------------------'
]]></artwork>
            </artset>
          </figure>
          <t>If replayed attacks are not counted as part of the rate-limit policy, legitimate Map-Requests will be procecced as illustrate in <xref target="riss-rate2"/>.</t>
          <figure anchor="riss-rate2">
            <name>An Example of Handling of Replayed Initial Subscription</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="568" viewBox="0 0 568 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,240 L 8,272" fill="none" stroke="black"/>
                  <path d="M 24,272 L 24,288" fill="none" stroke="black"/>
                  <path d="M 48,240 L 48,272" fill="none" stroke="black"/>
                  <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                  <path d="M 152,64 L 152,224" fill="none" stroke="black"/>
                  <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
                  <path d="M 352,32 L 352,64" fill="none" stroke="black"/>
                  <path d="M 376,64 L 376,304" fill="none" stroke="black"/>
                  <path d="M 392,32 L 392,64" fill="none" stroke="black"/>
                  <path d="M 392,96 L 392,224" fill="none" stroke="black"/>
                  <path d="M 392,272 L 392,304" fill="none" stroke="black"/>
                  <path d="M 560,96 L 560,224" fill="none" stroke="black"/>
                  <path d="M 560,272 L 560,304" fill="none" stroke="black"/>
                  <path d="M 136,32 L 168,32" fill="none" stroke="black"/>
                  <path d="M 352,32 L 392,32" fill="none" stroke="black"/>
                  <path d="M 136,64 L 168,64" fill="none" stroke="black"/>
                  <path d="M 352,64 L 392,64" fill="none" stroke="black"/>
                  <path d="M 392,96 L 560,96" fill="none" stroke="black"/>
                  <path d="M 152,126 L 368,126" fill="none" stroke="black"/>
                  <path d="M 152,130 L 368,130" fill="none" stroke="black"/>
                  <path d="M 376,128 L 392,128" fill="none" stroke="black"/>
                  <path d="M 152,158 L 368,158" fill="none" stroke="black"/>
                  <path d="M 152,162 L 368,162" fill="none" stroke="black"/>
                  <path d="M 376,160 L 392,160" fill="none" stroke="black"/>
                  <path d="M 392,224 L 560,224" fill="none" stroke="black"/>
                  <path d="M 8,240 L 48,240" fill="none" stroke="black"/>
                  <path d="M 8,272 L 48,272" fill="none" stroke="black"/>
                  <path d="M 392,272 L 560,272" fill="none" stroke="black"/>
                  <path d="M 32,286 L 368,286" fill="none" stroke="black"/>
                  <path d="M 32,290 L 368,290" fill="none" stroke="black"/>
                  <path d="M 376,288 L 392,288" fill="none" stroke="black"/>
                  <path d="M 392,304 L 560,304" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="376,288 364,282.4 364,293.6" fill="black" transform="rotate(0,368,288)"/>
                  <polygon class="arrowhead" points="376,160 364,154.4 364,165.6" fill="black" transform="rotate(0,368,160)"/>
                  <polygon class="arrowhead" points="376,128 364,122.4 364,133.6" fill="black" transform="rotate(0,368,128)"/>
                  <g class="text">
                    <text x="156" y="52">AT</text>
                    <text x="372" y="52">MS</text>
                    <text x="256" y="100">Map-Request(init_nonce,</text>
                    <text x="296" y="116">init_key_id,..)</text>
                    <text x="476" y="116">Security/integrity</text>
                    <text x="444" y="132">protection</text>
                    <text x="516" y="132">check.</text>
                    <text x="264" y="148">...</text>
                    <text x="408" y="148">A</text>
                    <text x="440" y="148">state</text>
                    <text x="476" y="148">is</text>
                    <text x="512" y="148">found</text>
                    <text x="444" y="164">xTR-ID/EID</text>
                    <text x="500" y="164">is</text>
                    <text x="536" y="164">found</text>
                    <text x="416" y="180">but</text>
                    <text x="448" y="180">the</text>
                    <text x="488" y="180">nonce</text>
                    <text x="536" y="180">check</text>
                    <text x="428" y="196">fails:</text>
                    <text x="472" y="196">rcv</text>
                    <text x="512" y="196">nonce</text>
                    <text x="544" y="196">&lt;</text>
                    <text x="424" y="212">local</text>
                    <text x="472" y="212">nonce</text>
                    <text x="504" y="212">+</text>
                    <text x="520" y="212">1</text>
                    <text x="24" y="260">xTR</text>
                    <text x="188" y="276">Map-Request(...)</text>
                    <text x="432" y="292">Process</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                  +---+                      +----+
                  | AT|                      | MS |
                  +-+-+                      +--+-+
                    |                           |
                    | Map-Request(init_nonce,   | .--------------------.
                    |          init_key_id,..)  | | Security/integrity |
                    +==========================>+-+ protection check.  |
                    |            ...            | | A state is found   |
                    +==========================>+-+ xTR-ID/EID is found|
                    |                           | | but the nonce check|
                    |                           | | fails: rcv nonce < |
                    |                           | | local nonce + 1    |
                    |                           | '--------------------'
  +----+                                        |
  |xTR |                                        |
  +-+--+         Map-Request(...)               | .--------------------.
    |==========================================>+-+ Process            |
                                                | '--------------------'
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="replayed-withdrawal">
          <name>Replayed Withdrawal</name>
          <t><xref target="rew"/> depicts the example of the exchange that occurs when an attacker sends a replayed withdrawal request. The request will be silently discared by the Map-Server.</t>
          <figure anchor="rew">
            <name>An Example of Handling of Replayed Removal of a Subscription</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="624" viewBox="0 0 624 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                  <path d="M 24,192 L 24,256" fill="none" stroke="black"/>
                  <path d="M 40,160 L 40,192" fill="none" stroke="black"/>
                  <path d="M 160,32 L 160,64" fill="none" stroke="black"/>
                  <path d="M 176,64 L 176,144" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,64" fill="none" stroke="black"/>
                  <path d="M 408,32 L 408,64" fill="none" stroke="black"/>
                  <path d="M 432,64 L 432,256" fill="none" stroke="black"/>
                  <path d="M 448,32 L 448,64" fill="none" stroke="black"/>
                  <path d="M 448,96 L 448,240" fill="none" stroke="black"/>
                  <path d="M 616,96 L 616,240" fill="none" stroke="black"/>
                  <path d="M 160,32 L 192,32" fill="none" stroke="black"/>
                  <path d="M 408,32 L 448,32" fill="none" stroke="black"/>
                  <path d="M 160,64 L 192,64" fill="none" stroke="black"/>
                  <path d="M 408,64 L 448,64" fill="none" stroke="black"/>
                  <path d="M 448,96 L 616,96" fill="none" stroke="black"/>
                  <path d="M 176,126 L 424,126" fill="none" stroke="black"/>
                  <path d="M 176,130 L 424,130" fill="none" stroke="black"/>
                  <path d="M 432,128 L 448,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 40,160" fill="none" stroke="black"/>
                  <path d="M 8,192 L 40,192" fill="none" stroke="black"/>
                  <path d="M 448,240 L 616,240" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="432,128 420,122.4 420,133.6" fill="black" transform="rotate(0,424,128)"/>
                  <g class="text">
                    <text x="180" y="52">AT</text>
                    <text x="428" y="52">MS</text>
                    <text x="260" y="116">Map-Request(nonce,</text>
                    <text x="380" y="116">AFI=0,...)</text>
                    <text x="532" y="116">Security/integrity</text>
                    <text x="500" y="132">protection</text>
                    <text x="572" y="132">check.</text>
                    <text x="464" y="148">A</text>
                    <text x="496" y="148">state</text>
                    <text x="532" y="148">is</text>
                    <text x="568" y="148">found</text>
                    <text x="500" y="164">xTR-ID/EID</text>
                    <text x="556" y="164">is</text>
                    <text x="592" y="164">found</text>
                    <text x="24" y="180">xTR</text>
                    <text x="472" y="180">but</text>
                    <text x="504" y="180">the</text>
                    <text x="544" y="180">nonce</text>
                    <text x="592" y="180">check</text>
                    <text x="484" y="196">fails:</text>
                    <text x="528" y="196">rcv</text>
                    <text x="568" y="196">nonce</text>
                    <text x="600" y="196">&lt;</text>
                    <text x="480" y="212">local</text>
                    <text x="528" y="212">nonce</text>
                    <text x="560" y="212">+</text>
                    <text x="576" y="212">1</text>
                    <text x="488" y="228">Discard</text>
                    <text x="536" y="228">the</text>
                    <text x="580" y="228">packet</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     | AT|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
                       |                               | .--------------------.
                       | Map-Request(nonce, AFI=0,...) | | Security/integrity |
                       +==============================>+-+ protection check.  |
                       |                               | | A state is found   |
  +---+                                                | | xTR-ID/EID is found|
  |xTR|                                                | | but the nonce check|
  +-+-+                                                | | fails: rcv nonce < |
    |                                                  | | local nonce + 1    |
    |                                                  | | Discard the packet |
    |                                                  | '--------------------'
    |                                                  |
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="replayed-notification-updates">
          <name>Replayed Notification Updates</name>
          <t><xref target="rmsw"/> illustrates the observed exchange when a replayed notification update is sent by a misbehaving node (AT) to an xTR.</t>
          <figure anchor="rmsw">
            <name>An Example of Replayed Notification of Subscription Withdrawal</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="472" viewBox="0 0 472 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,96 L 8,256" fill="none" stroke="black"/>
                  <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
                  <path d="M 176,96 L 176,256" fill="none" stroke="black"/>
                  <path d="M 192,64 L 192,272" fill="none" stroke="black"/>
                  <path d="M 208,32 L 208,64" fill="none" stroke="black"/>
                  <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
                  <path d="M 448,64 L 448,272" fill="none" stroke="black"/>
                  <path d="M 464,32 L 464,64" fill="none" stroke="black"/>
                  <path d="M 176,32 L 208,32" fill="none" stroke="black"/>
                  <path d="M 424,32 L 464,32" fill="none" stroke="black"/>
                  <path d="M 176,64 L 208,64" fill="none" stroke="black"/>
                  <path d="M 424,64 L 464,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
                  <path d="M 176,128 L 192,128" fill="none" stroke="black"/>
                  <path d="M 200,126 L 448,126" fill="none" stroke="black"/>
                  <path d="M 200,130 L 448,130" fill="none" stroke="black"/>
                  <path d="M 8,256 L 176,256" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="208,128 196,122.4 196,133.6" fill="black" transform="rotate(180,200,128)"/>
                  <g class="text">
                    <text x="192" y="52">xTR</text>
                    <text x="444" y="52">AT</text>
                    <text x="92" y="116">Security/integrity</text>
                    <text x="272" y="116">Map-Notify(nonce,</text>
                    <text x="372" y="116">TTL=0,</text>
                    <text x="420" y="116">...)</text>
                    <text x="60" y="132">protection</text>
                    <text x="132" y="132">check.</text>
                    <text x="40" y="148">Check</text>
                    <text x="84" y="148">that</text>
                    <text x="120" y="148">rcv</text>
                    <text x="40" y="164">nonce</text>
                    <text x="76" y="164">&gt;=</text>
                    <text x="112" y="164">local</text>
                    <text x="40" y="180">nonce</text>
                    <text x="72" y="180">+</text>
                    <text x="88" y="180">1</text>
                    <text x="48" y="212">Discard</text>
                    <text x="96" y="212">the</text>
                    <text x="144" y="212">message</text>
                    <text x="48" y="228">because</text>
                    <text x="96" y="228">the</text>
                    <text x="136" y="228">nonce</text>
                    <text x="44" y="244">checks</text>
                    <text x="100" y="244">failed</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     |xTR|                          | AT |
                     +-+-+                          +--+-+
                       |                               |
.--------------------. |                               |
| Security/integrity | | Map-Notify(nonce, TTL=0, ...) |
| protection check.  +-+<==============================+
| Check that rcv     | |                               |
| nonce >= local     | |                               |
| nonce + 1          | |                               |
|                    | |                               |
| Discard the message| |                               |
| because the nonce  | |                               |
| checks failed      | |                               |
'--------------------' |                               |
                       |                               |
]]></artwork>
            </artset>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="explicit-subscriptions">
      <name>Explicit Subscriptions</name>
      <t>TBC.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document does not introduce any security considerations beyond those already discussed in <xref target="I-D.ietf-lisp-pubsub"/>.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document does not make any request to IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="I-D.ietf-lisp-pubsub">
        <front>
          <title>Publish/Subscribe Functionality for the Locator/ID Separation Protocol (LISP)</title>
          <author fullname="Alberto Rodriguez-Natal" initials="A." surname="Rodriguez-Natal">
            <organization>Cisco</organization>
          </author>
          <author fullname="Vina Ermagan" initials="V." surname="Ermagan">
            <organization>Google</organization>
          </author>
          <author fullname="Albert Cabellos-Aparicio" initials="A." surname="Cabellos-Aparicio">
            <organization>UPC/BarcelonaTech</organization>
          </author>
          <author fullname="Sharon Barkai" initials="S." surname="Barkai">
            <organization>Nexar</organization>
          </author>
          <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
            <organization>Orange</organization>
          </author>
          <date day="6" month="January" year="2023"/>
          <abstract>
            <t>   This document specifies an extension to the request/reply based
   Locator/ID Separation Protocol (LISP) control plane to enable
   Publish/Subscribe (PubSub) operation.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lisp-pubsub-10"/>
      </reference>
      <reference anchor="RFC9301">
        <front>
          <title>Locator/ID Separation Protocol (LISP) Control Plane</title>
          <author fullname="D. Farinacci" initials="D." surname="Farinacci">
            <organization/>
          </author>
          <author fullname="F. Maino" initials="F." surname="Maino">
            <organization/>
          </author>
          <author fullname="V. Fuller" initials="V." surname="Fuller">
            <organization/>
          </author>
          <author fullname="A. Cabellos" initials="A." role="editor" surname="Cabellos">
            <organization/>
          </author>
          <date month="October" year="2022"/>
          <abstract>
            <t>This document describes the control plane and Mapping Service for the Locator/ID Separation Protocol (LISP), implemented by two types of LISP-speaking devices -- the LISP Map-Resolver and LISP Map-Server -- that provide a simplified "front end" for one or more Endpoint IDs (EIDs) to Routing Locator mapping databases.</t>
            <t>By using this control plane service interface and communicating with Map-Resolvers and Map-Servers, LISP Ingress Tunnel Routers (ITRs) and Egress Tunnel Routers (ETRs) are not dependent on the details of mapping database systems; this behavior facilitates modularity with different database designs.  Since these devices implement the "edge" of the LISP control plane infrastructure, connecting EID addressable nodes of a LISP site, the implementation and operational complexity of the overall cost and effort of deploying LISP is reduced.</t>
            <t>This document obsoletes RFCs 6830 and 6833.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9301"/>
        <seriesInfo name="DOI" value="10.17487/RFC9301"/>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to TBC.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
