<?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-03" 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-03"/>
    <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="10"/>
    <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 of 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 an xTR avoids maintaining stale mappings. Such details are implementation specific (see, for example, <xref target="sec-sub-update"/>). In order to accommodate Map-Notify messages 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 uccessful 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="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 this 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"/>) and that the new security association succeeds.</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="336" width="600" viewBox="0 0 600 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,160 L 8,272" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
              <path d="M 176,160 L 176,272" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,320" 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,224" fill="none" stroke="black"/>
              <path d="M 408,256 L 408,320" 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,256 L 424,320" fill="none" stroke="black"/>
              <path d="M 592,96 L 592,224" fill="none" stroke="black"/>
              <path d="M 592,256 L 592,320" 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 424,96 L 592,96" fill="none" stroke="black"/>
              <path d="M 192,126 L 400,126" fill="none" stroke="black"/>
              <path d="M 192,130 L 400,130" fill="none" stroke="black"/>
              <path d="M 408,128 L 424,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 176,160" fill="none" stroke="black"/>
              <path d="M 176,176 L 192,176" fill="none" stroke="black"/>
              <path d="M 200,174 L 408,174" fill="none" stroke="black"/>
              <path d="M 200,178 L 408,178" fill="none" stroke="black"/>
              <path d="M 416,176 L 424,176" fill="none" stroke="black"/>
              <path d="M 424,224 L 592,224" fill="none" stroke="black"/>
              <path d="M 424,240 L 576,240" fill="none" stroke="black"/>
              <path d="M 176,256 L 192,256" fill="none" stroke="black"/>
              <path d="M 200,254 L 400,254" fill="none" stroke="black"/>
              <path d="M 200,258 L 400,258" fill="none" stroke="black"/>
              <path d="M 416,256 L 424,256" fill="none" stroke="black"/>
              <path d="M 8,272 L 176,272" fill="none" stroke="black"/>
              <path d="M 424,320 L 592,320" fill="none" stroke="black"/>
              <path d="M 424,240 C 415.16936,240 408,247.16936 408,256" fill="none" stroke="black"/>
              <path d="M 576,240 C 584.83064,240 592,247.16936 592,256" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="408,256 396,250.4 396,261.6" fill="black" transform="rotate(0,400,256)"/>
              <polygon class="arrowhead" points="408,128 396,122.4 396,133.6" fill="black" transform="rotate(0,400,128)"/>
              <polygon class="arrowhead" points="208,176 196,170.4 196,181.6" fill="black" transform="rotate(180,200,176)"/>
              <g class="text">
                <text x="192" y="52">xTR</text>
                <text x="404" y="52">MS</text>
                <text x="276" y="100">Map-Request(nonce,</text>
                <text x="280" y="116">new</text>
                <text x="328" y="116">key_id,</text>
                <text x="380" y="116">...)</text>
                <text x="508" y="116">Security/integrity</text>
                <text x="476" y="132">protection</text>
                <text x="548" y="132">check.</text>
                <text x="440" y="148">A</text>
                <text x="472" y="148">state</text>
                <text x="512" y="148">for</text>
                <text x="244" y="164">Map-Notify</text>
                <text x="320" y="164">(nonce,</text>
                <text x="372" y="164">...)</text>
                <text x="476" y="164">xTR-ID/EID</text>
                <text x="532" y="164">is</text>
                <text x="568" y="164">found</text>
                <text x="92" y="180">Security/integrity</text>
                <text x="448" y="180">but</text>
                <text x="480" y="180">the</text>
                <text x="512" y="180">new</text>
                <text x="548" y="180">auth</text>
                <text x="60" y="196">protection</text>
                <text x="132" y="196">check.</text>
                <text x="448" y="196">key</text>
                <text x="476" y="196">is</text>
                <text x="512" y="196">used,</text>
                <text x="552" y="196">the</text>
                <text x="40" y="212">Check</text>
                <text x="84" y="212">that</text>
                <text x="120" y="212">rcv</text>
                <text x="456" y="212">state</text>
                <text x="492" y="212">is</text>
                <text x="536" y="212">updated</text>
                <text x="40" y="228">nonce</text>
                <text x="76" y="228">==</text>
                <text x="104" y="228">snd</text>
                <text x="144" y="228">nonce</text>
                <text x="48" y="244">Confirm</text>
                <text x="96" y="244">the</text>
                <text x="128" y="244">sub</text>
                <text x="160" y="244">and</text>
                <text x="304" y="244">Map-Notify-Ack(nonce,...)</text>
                <text x="36" y="260">wait</text>
                <text x="72" y="260">for</text>
                <text x="116" y="260">notifs</text>
                <text x="508" y="260">Security/integrity</text>
                <text x="476" y="276">protection</text>
                <text x="548" y="276">check.</text>
                <text x="452" y="292">This</text>
                <text x="524" y="292">subscription</text>
                <text x="460" y="308">update</text>
                <text x="500" y="308">is</text>
                <text x="536" y="308">ACKed</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|
| Security/integrity +-+<=========================+-+ but the new auth   |
| protection check.  | |                          | | key is used, the   |
| Check that rcv     | |                          | | state is updated   |
| 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>
      <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="392" y="116">AFI=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, AFI=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>
    <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 as illustrated in <xref target="boot"/>.</t>
      <figure anchor="boot">
        <name>An Example of Clearing State when Bootstrapping</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="640" viewBox="0 0 640 320" 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,304" 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,304" 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 632,96 L 632,224" 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 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 8,288 L 176,288" 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="52" y="116">Generate</text>
                <text x="96" y="116">a</text>
                <text x="132" y="116">random</text>
                <text x="276" y="116">Map-Request(nonce,</text>
                <text x="392" y="116">AFI=0...)</text>
                <text x="548" y="116">Security/integrity</text>
                <text x="40" y="132">nonce</text>
                <text x="80" y="132">and</text>
                <text x="112" y="132">new</text>
                <text x="144" y="132">key</text>
                <text x="516" y="132">protection</text>
                <text x="588" y="132">check.</text>
                <text x="484" y="148">No</text>
                <text x="520" y="148">entry</text>
                <text x="556" y="148">is</text>
                <text x="592" y="148">found</text>
                <text x="488" y="164">for</text>
                <text x="524" y="164">this</text>
                <text x="572" y="164">xTR-ID</text>
                <text x="272" y="180">Map-Notify(nonce,</text>
                <text x="364" y="180">...)</text>
                <text x="92" y="196">Security/integrity</text>
                <text x="60" y="212">protection</text>
                <text x="132" y="212">check.</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>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                     +---+                          +----+
                     |xTR|                          | MS |
                     +-+-+                          +--+-+
                       |                               |
.--------------------. |                               | .--------------------.
| Generate a random  | | Map-Request(nonce, AFI=0...)  | | Security/integrity |
| nonce and new key  +-+==============================>+-+ protection check.  |
'--------------------' |                               | | No entry is found  |
                       |                               | | for this xTR-ID    |
.--------------------. | Map-Notify(nonce, ...)        | |                    |
| Security/integrity +-+<==============================+-+                    |
| protection check.  | |                               | |                    |
| Check that rcv     | |                               | '--------------------'
| nonce == snd nonce | |                               |
| Send Map-Notfiy-ACK| | Map-Notify-Ack(nonce,...)     |
|                    +-+==============================>+
'--------------------' |                               |
                       |                               |
]]></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. This example assumes that a state is maintained by the Map-Server for this xTR.</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 illustrated 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>
          <t>Suppose now that the xTR deletes it subscription. An attacker may replay valid Map-Request messages that were used for subscription or updates. These messages can't be detected by the Map-Server as being replay messages. The attacker may vary the source IP address of the Map-Request to trigger as many Map-Notifies sent to other xTRs. These Map-Notify messages will be ignored by the xTR as they don't have any matching state.</t>
          <figure anchor="replay-no-state">
            <name>An Example of Handling of Replayed Map-Requests when no State</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="632" viewBox="0 0 632 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,72 L 24,176" fill="none" stroke="black"/>
                  <path d="M 24,288 L 24,320" fill="none" stroke="black"/>
                  <path d="M 40,32 L 40,64" fill="none" stroke="black"/>
                  <path d="M 40,320 L 40,384" fill="none" stroke="black"/>
                  <path d="M 56,288 L 56,320" fill="none" stroke="black"/>
                  <path d="M 168,176 L 168,208" fill="none" stroke="black"/>
                  <path d="M 184,208 L 184,272" fill="none" stroke="black"/>
                  <path d="M 200,176 L 200,208" fill="none" stroke="black"/>
                  <path d="M 416,32 L 416,64" fill="none" stroke="black"/>
                  <path d="M 440,64 L 440,384" fill="none" stroke="black"/>
                  <path d="M 456,32 L 456,64" fill="none" stroke="black"/>
                  <path d="M 456,224 L 456,368" fill="none" stroke="black"/>
                  <path d="M 624,224 L 624,368" fill="none" stroke="black"/>
                  <path d="M 8,32 L 40,32" fill="none" stroke="black"/>
                  <path d="M 416,32 L 456,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 40,64" fill="none" stroke="black"/>
                  <path d="M 416,64 L 456,64" fill="none" stroke="black"/>
                  <path d="M 24,94 L 432,94" fill="none" stroke="black"/>
                  <path d="M 24,98 L 432,98" fill="none" stroke="black"/>
                  <path d="M 32,126 L 440,126" fill="none" stroke="black"/>
                  <path d="M 32,130 L 440,130" fill="none" stroke="black"/>
                  <path d="M 24,158 L 432,158" fill="none" stroke="black"/>
                  <path d="M 24,162 L 432,162" fill="none" stroke="black"/>
                  <path d="M 168,176 L 200,176" fill="none" stroke="black"/>
                  <path d="M 168,208 L 200,208" fill="none" stroke="black"/>
                  <path d="M 456,224 L 624,224" fill="none" stroke="black"/>
                  <path d="M 184,254 L 432,254" fill="none" stroke="black"/>
                  <path d="M 184,258 L 432,258" fill="none" stroke="black"/>
                  <path d="M 440,256 L 456,256" fill="none" stroke="black"/>
                  <path d="M 24,288 L 56,288" fill="none" stroke="black"/>
                  <path d="M 24,320 L 56,320" fill="none" stroke="black"/>
                  <path d="M 48,334 L 440,334" fill="none" stroke="black"/>
                  <path d="M 48,338 L 440,338" fill="none" stroke="black"/>
                  <path d="M 448,336 L 456,336" fill="none" stroke="black"/>
                  <path d="M 456,368 L 624,368" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="440,256 428,250.4 428,261.6" fill="black" transform="rotate(0,432,256)"/>
                  <polygon class="arrowhead" points="440,160 428,154.4 428,165.6" fill="black" transform="rotate(0,432,160)"/>
                  <polygon class="arrowhead" points="440,96 428,90.4 428,101.6" fill="black" transform="rotate(0,432,96)"/>
                  <polygon class="arrowhead" points="56,336 44,330.4 44,341.6" fill="black" transform="rotate(180,48,336)"/>
                  <polygon class="arrowhead" points="40,128 28,122.4 28,133.6" fill="black" transform="rotate(180,32,128)"/>
                  <g class="text">
                    <text x="24" y="52">xTR</text>
                    <text x="436" y="52">MS</text>
                    <text x="132" y="84">Map-Request(nonce,</text>
                    <text x="248" y="84">AFI=0...)</text>
                    <text x="152" y="116">Map-Notify(nonce,</text>
                    <text x="264" y="116">AFI=0...)</text>
                    <text x="116" y="148">Map-Notify-Ack</text>
                    <text x="188" y="196">AT</text>
                    <text x="268" y="228">Map-Request(nonce,</text>
                    <text x="328" y="244">key_id,</text>
                    <text x="376" y="244">..)</text>
                    <text x="540" y="244">Security/integrity</text>
                    <text x="508" y="260">protection</text>
                    <text x="580" y="260">check.</text>
                    <text x="476" y="276">No</text>
                    <text x="512" y="276">state</text>
                    <text x="548" y="276">is</text>
                    <text x="584" y="276">found</text>
                    <text x="480" y="292">for</text>
                    <text x="544" y="292">xTR-ID/EID.</text>
                    <text x="40" y="308">xTR</text>
                    <text x="480" y="308">Add</text>
                    <text x="504" y="308">a</text>
                    <text x="564" y="308">subscription</text>
                    <text x="192" y="324">Map-Notify(nonce,</text>
                    <text x="284" y="324">...)</text>
                    <text x="488" y="324">entry</text>
                    <text x="528" y="324">for</text>
                    <text x="564" y="324">this</text>
                    <text x="600" y="324">xTR</text>
                    <text x="192" y="356">...</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---+                                              +----+
|xTR|                                              | MS |
+---+                                              +--+-+
  |    Map-Request(nonce, AFI=0...)                   |
  +==================================================>+
  |       Map-Notify(nonce, AFI=0...)                 |
  |<==================================================+
  |    Map-Notify-Ack                                 |
  +==================================================>+
  |                 +---+                             |
                    | AT|                             |
                    +-+-+                             |
                      | Map-Request(nonce,            | .--------------------.
                      |              key_id, ..)      | | Security/integrity |
                      +==============================>+-+ protection check.  |
                      |                               | | No state is found  |
  +---+                                               | | for xTR-ID/EID.    |
  |xTR|                                               | | Add a subscription |
  +-+-+        Map-Notify(nonce, ...)                 | | entry for this xTR |
    |<================================================+-+                    |
    |                 ...                             | |                    |
    |                                                 | '--------------------'
    |                                                 |
]]></artwork>
            </artset>
          </figure>
          <t>Note that if LISP-SEC messages are timestamped, the replayed packets
   would be detected and, thus, be silently ignored by the Map-Server.
   Such invalid messages won't then interfere with legitimate Map-
   Requests if the Map-Server has sufficient resources to process the
   timestamp of all received requests.  An example of processing
   timestamped Map-Requests (rate-limit not reached) is depicted in
   <xref target="replay-no-state-ts"/>.</t>
          <figure anchor="replay-no-state-ts">
            <name>An Example of Handling of Replayed Subscription with Timestamp</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="568" viewBox="0 0 568 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,176 L 8,208" fill="none" stroke="black"/>
                  <path d="M 24,208 L 24,256" fill="none" stroke="black"/>
                  <path d="M 40,176 L 40,208" fill="none" stroke="black"/>
                  <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                  <path d="M 152,64 L 152,144" 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,272" fill="none" stroke="black"/>
                  <path d="M 392,32 L 392,64" fill="none" stroke="black"/>
                  <path d="M 392,96 L 392,208" fill="none" stroke="black"/>
                  <path d="M 392,240 L 392,272" fill="none" stroke="black"/>
                  <path d="M 560,96 L 560,208" fill="none" stroke="black"/>
                  <path d="M 560,240 L 560,272" 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 8,176 L 40,176" fill="none" stroke="black"/>
                  <path d="M 8,208 L 40,208" fill="none" stroke="black"/>
                  <path d="M 392,208 L 560,208" fill="none" stroke="black"/>
                  <path d="M 392,240 L 560,240" fill="none" stroke="black"/>
                  <path d="M 32,254 L 368,254" fill="none" stroke="black"/>
                  <path d="M 32,258 L 368,258" fill="none" stroke="black"/>
                  <path d="M 376,256 L 392,256" fill="none" stroke="black"/>
                  <path d="M 392,272 L 560,272" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="376,256 364,250.4 364,261.6" fill="black" transform="rotate(0,368,256)"/>
                  <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="416" y="148">The</text>
                    <text x="464" y="148">message</text>
                    <text x="508" y="148">is</text>
                    <text x="440" y="164">discarded</text>
                    <text x="512" y="164">because</text>
                    <text x="440" y="180">timestamp</text>
                    <text x="508" y="180">checks</text>
                    <text x="24" y="196">xTR</text>
                    <text x="420" y="196">fail</text>
                    <text x="148" y="244">Map-Request(...)</text>
                    <text x="448" y="260">Processed</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                  +---+                      +----+
                  | AT|                      | MS |
                  +-+-+                      +--+-+
                    |                           |
                    | Map-Request(init_nonce,   | .--------------------.
                    |          init_key_id,..)  | | Security/integrity |
                    +==========================>+-+ protection check.  |
                    |                           | | The message is     |
                                                | | discarded because  |
  +---+                                         | | timestamp checks   |
  |xTR|                                         | | fail               |
  +-+-+                                         | '--------------------'
    |                                           |
    |       Map-Request(...)                    | .--------------------.
    |==========================================>+-+  Processed         |
                                                | '--------------------'
]]></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 if state is already present.</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. This example assumes that the replayed message is a replay of Map-Server triggered withdrawal and that a state matching this notification is maintained by the 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="96" y="244">fails</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 fails       | |                               |
'--------------------' |                               |
                       |                               |
]]></artwork>
            </artset>
          </figure>
          <t>Note that if no state is maintained by the xTR, the Map-Notify will be silently discarded.</t>
        </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="10" month="February" 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-11"/>
      </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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
oXn6fx5nP5rJigAA

-->

</rfc>
