<?xml version='1.0' encoding='utf-8'?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" consensus="true" docName="draft-moskowitz-hip-fast-mobility-11"
	category="std" ipr="trust200902" obsoletes="" updates="8046" submissionType="IETF"
	xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <front>
    <title abbrev="Fast HIP Mobility">Fast HIP Host Mobility</title>
    <seriesInfo name="Internet-Draft" value="draft-moskowitz-hip-fast-mobility-11"/>
	<author fullname="Robert Moskowitz" initials="R" surname="Moskowitz">
    <organization>HTT Consulting</organization>
    <address>
      <postal> 
	    <street></street>
        <city>Oak Park</city>
        <region>MI</region>
        <code>48237</code>
        <country>USA</country>
      </postal>
      <email>rgm@labs.htt-consult.com</email>
	</address>
	</author>
	<author fullname="Stuart W. Card" initials="S." surname="Card">
	<organization>AX Enterprize</organization>
	<address>
	  <postal>
	    <street>4947 Commercial Drive</street>
	    <city>Yorkville</city>
	    <region>NY</region>
	    <code>13495</code>
	    <country>USA</country>
	  </postal>
	  <email>stu.card@axenterprize.com</email>
	</address>
	</author>
	<author fullname="Adam Wiethuechter" initials="A." surname="Wiethuechter">
	<organization>AX Enterprize</organization>
	<address>
	  <postal>
	    <street>4947 Commercial Drive</street>
	    <city>Yorkville</city>
	    <region>NY</region>
	    <code>13495</code>
	    <country>USA</country>
	  </postal>
	  <email>adam.wiethuechter@axenterprize.com</email>
	</address>
	</author>
    <date year="2025"/>
    <area>Internet</area>
    <workgroup>HIP</workgroup>
    <keyword>RFC</keyword>
    <keyword>Request for Comments</keyword>
    <keyword>I-D</keyword>
    <keyword>Internet-Draft</keyword>
    <keyword>HIP</keyword>
<abstract>
<t>
	This document describes mobility scenarios and how to aggressively 
	support them in HIP.  The goal is minimum lag in the mobility 
	event.
</t>
</abstract>
</front>
<middle>
<section numbered="true" toc="default"> <name>Introduction</name>
<t>
	This document expands on <xref target="RFC8046" 
	format="default">HIP Host Mobility</xref> to describe a set of 
	mobility scenarios that can be addressed by mechanisms that 
	accelerate the basic HIP mobility UPDATE exchange.
</t>
<t>
	<xref target="RFC8046" format="default">HIP Host Mobility</xref> 
	performs a return address validation to ensure that the UPDATE 
	address is reachable by the peer.  Two reasons are given for this 
	approach: middleboxes blocking return reachability and malicious 
	peers providing false address updates to flood a target.
</t>
<t>
	The approach here is to start using the new address while it is 
	being validated.  Worst case is a few packets are lost or sent to a 
	wrong target.  These are acceptable risks while gaining a fast 
	address update that works in most cases.
</t>
<t>
	One mechanism used is to piggyback data using Next Header even 
	while the mobile peer address is flagged UNVERIFIED.  This is 
	practical as the new peer address is authenticated by the HIP_MAC 
	in UPDATE.  The UPDATE can neither be forged nor can it be 
	replayed.  The verification is more to ensure reverse reachability 
	particularly across NATs and firewalls.
</t>
<t>
	Another mechanism expands the use of the VIA_RVS parameter to 
	"shotgun" mobility UPDATEs.  These and other optimizations will be 
	covered in detail.
</t>
</section>
<section anchor="terms" numbered="true" toc="default"> <name>Terms and Definitions</name>
	<section numbered="true" toc="default"> <name>Requirements Terminology</name>
<t>
	The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
	"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 
	and "OPTIONAL" in this document are to be interpreted as described 
	in BCP 14 <xref target="RFC2119" format="default"/> <xref 
	target="RFC8174" format="default"/> when, and only when, they 
	appear in all capitals, as shown here.
</t>
	</section>
	<section numbered="true" toc="default"> <name>Definitions</name>
        <dl newline="true" spacing="normal">
          <dt>MTU</dt>
          <dd>
			The Maximum Transmit Unit or maximum number of bytes in a 
			datagram that the Interface supports.
		</dd>
          <dt>Rendezvous Server (RVS)</dt>
          <dd>
			A HIP registrar providing rendezvous service.
		</dd>
          <dt>SPI</dt>
          <dd>
			The Security Parameter Index.
		</dd>
        </dl>
	</section>
</section>
<section anchor="prob-space" numbered="true" toc="default"> <name>Problem Space</name>
<section numbered="true" toc="default"> <name>Time to complete move</name>
<t>
	Most mobility environments are built with a "break then make" model 
	for connectivity.  Thus there is measurable time between the old 
	address being unusable and the new address being functional. Adding 
	mobility convergence times just further aggravates the delay which 
	negatively impacts the user experience.
</t>
<t>
	The "make then break" model for connectivity is supported via HIP 
	multihoming and is the subject of a separate recommendation.
</t>
<t>
	HIP mobility relies on a 3 packet UPDATE exchange which in some 
	cases can be optimized to 2 packets.  This can be further delayed 
	in a "double-jump" scenario with waiting for the direct connection 
	to fail before falling over to contacting the peer's Rendezvous 
	Server (RVS).  These processes have resulted in other technologies 
	to be preferred over HIP as they have faster convergence even if 
	they achieve this while sacrificing security.
</t>
</section>
<section numbered="true" toc="default"> <name>Apriori move knowledge</name>
<t>
	A HIP Host that has the potential to 'move' (acquire a new address 
	for an interface) during the lifetime of a HIP association SHOULD 
	be registered to an RVS.  Such a HIP host SHOULD always inform its 
	peer of its RVS address, as it may experience a "Double-Jump" move 
	as in <xref target="dMov" format="default"/>.
</t>
<t>
	In an RVS assisted base exchange, the Responder ensures the 
	Initiator knows its RVS with the VIA_RVS parameter in the R1 as 
	specified in <xref target="RFC8004" format="default">HIP Rendezvous 
	Extension</xref>.  However, the Responder has no mechanism to learn 
	the Initiator's RVS address.  Additionally, it is possible for an 
	Initiator to directly contact the Responder and thus not learn about 
	the Responder's RVS in the base exchange.
</t>
<t>
	A host may not publish its RVS if it does not wish to be easily 
	discovered.  It still should notify its peers of its RVS if it 
	expects to be found in some move scenarios.
</t>
<t>
	The HIP base exchange needs to include more RVS information.
</t>
</section>
</section>
<section anchor="vRVS" numbered="true" toc="default"> <name>Enhanced availability of VIA_RVS</name>
<t>
	The VIA_RVS parameter is defined in <xref target="RFC8004" 
	format="default">HIP Rendezvous Extension</xref> for use in R1, but 
	only identifies the Responder's RVS to the Initiator when the I1 
	was routed through the RVS.
</t>
<t>
	Firstly, a Responder SHOULD always provide its VIA_RVS information 
	in R1 even when the I1 came directly from the Initiator.  Secondly, 
	the Initiator SHOULD always provide its VIA_RVS information in I2.  
	The VIA_RVS address is always maintained as part of the HIT to IP 
	addressing information.  Through these two expansions in the 
	availability of VIA_RVS, the hosts are assured to possess their 
	peer's RVS address to "shotgun" UPDATEs and thus accelerate 
	mobility.
</t>
</section>
<section anchor="sMov" numbered="true" toc="default"> <name>Single move mobility</name>
<t>
	Data traffic between host A and B may use <xref target="RFC7402" 
	format="default">ESP with HIP</xref> or any other tunneling 
	protocol.  In ESP the relationship of the tunnel SAs with the HIP 
	SA puts a high level of trust on the following fast mobility.
</t>
<section numbered="true" toc="default"> <name>Piggybacking impact on transport window size</name>
<t>
	The following sections define the operation of a HIP UPDATE payload 
	followed by some transport (e.g. TCP or UDP) payload in a single IP 
	datagram.  This multicontent IP datagram works best with a smaller 
	window size for the higher layer.  The normal operation is to 
	compare the size of the transport datagram plus HIP UPDATE payload 
	and ensure it is less than the MTU.  An implementation may be able 
	to adjust the transport window size downward so that the higher 
	layer could still fill it and the whole piece then still fit within 
	the MTU.
</t>
</section>
<section numbered="true" toc="default"> <name>Environment</name>
        <ul spacing="normal">
          <li>
			Host A is mobile.
		</li>
          <li>
			Host B may be mobile, but not changing IP address at this time.
		</li>
          <li>
			Only Host A is moving in the network and changing its IP address.
		</li>
          <li>
			Host A and B share a HIP Security Association.
		</li>
          <li>
			Host A and B are registered to a RVS server, not 
			necessarily the same and each has the others RVS address.
		</li>
        </ul>
</section>
<section anchor="SubA" numbered="true" toc="default"> <name>Scenario 1: Neither host has data to transmit</name>
<t>
	Host A triggers a HIP mobility UPDATE with Locator to inform Host B 
	of new address.  Host B, upon validating Host A HIP UPDATE, 
	continues with Address Verification.
</t>
</section>
<section numbered="true" toc="default"> <name>Scenario 2: Host A has data to transmit</name>
<section numbered="true" toc="default"> <name>IPv6 datagram + HIP UPDATE &gt; MTU</name>
<t>
	Host A triggers a HIP mobility UPDATE with Locator to inform Host B 
	of new address.  As the UPDATE + datagram would exceed the MTU, the 
	datagram is sent separately after receipt of the HIP UPDATE from 
	Host B.
</t>
<t>
	The HIP UPDATE packets vary in length as follows:
</t>
	<dl newline="false" spacing="normal">
		<dt>Move notification:</dt>
		<dd>
			302 bytes - UPDATE(ESP_INFO, LOCATOR, SEQ, HMAC, HIP_SIGNATURE)
		</dd>
		<dt>Move verification:</dt>
		<dd>
			286 bytes - UPDATE(ESP_INFO, SEQ, ACK, HMAC, HIP_SIGNATURE, 
			ECHO_REQUEST_UNSIGNED)
		</dd>
		<dt>Verification ack:</dt>
		<dd>
			262 bytes - UPDATE(ESP_INFO, ACK, HMAC, HIP_SIGNATURE, 
			ECHO_RESPONSE_UNSIGNED)
		</dd>
	</dl>
</section>
<section numbered="true" toc="default"> <name>IPv6 datagram + HIP UPDATE &lt;= MTU</name>
<t>
	Host A sends HIP UPDATE with Locator to inform Host B of new 
	address.  Datagram is appended to HIP UPDATE using Next Header. 
	Host B, upon validating Host A HIP UPDATE, sends next header to 
	proper module and continues with Address Verification.  This 
	datagram is processed even though the address is UNVERIFIED.
</t>
<t>
	The ESP anti-replay window managed by its envelope sequence number 
	can protect against replayed UPDATE+ESP packets prior to address 
	verification.
</t>
</section>
</section>
<section numbered="true" toc="default"> <name>Scenario 3: Host B has data to transmit</name>
<t>
	After Host B receives a HIP mobility UPDATE from A it has data to 
	send to A.  Or Host B may have been sending data to Host A while 
	Host A was moving.  The old data may have been lost; for example 
	the data is over UDP with no keepalives during the move time.  The 
	old data may be in a retransmission state; for example the data is 
	over TCP.  Or the data reached the interface from the higher layer 
	at the same time that the HIP UPDATE with new locator was 
	successfully processed.
</t>
<section numbered="true" toc="default"> <name>IPv6 datagram + HIP UPDATE &gt; MTU</name>
<t>
	Host B sends the HIP UPDATE validation followed by the IPv6 
	datagram.  Host B may place the address in ACTIVE state or wait 
	from HIP UPDATE confirmation from Host A.
</t>
</section>
<section numbered="true" toc="default"> <name>IPv6 datagram + HIP UPDATE &lt;= MTU</name>
<t>
	Host B sends the HIP UPDATE validation within the IPv6 datagram.  
	Host B may place the address in ACTIVE state or wait from HIP 
	UPDATE confirmation from Host A.
</t>
</section>
</section>
</section>
<section anchor="dMov" numbered="true" toc="default"> <name>Double-Jump mobility</name>
<t>
	The HIP mobility UPDATE will fail without the use of RVS.  In fact 
	both RVS are needed for both UPDATEs to find its peer.  This is why 
	the "shotgun" acceleration SHOULD always be used when the peer's 
	RVS is known.
</t>
<section numbered="true" toc="default"> <name>Environment</name>
	<ul spacing="normal">
		<li>
			Both host A and B are mobile.
		</li>
		<li>
			Host A and B share a HIP Security Association.
		</li>
		<li>
			Both hosts move in the network and change their IP 
			addresses.  Before either receives the others HIP mobility 
			UPDATE.
		</li>
		<li>
			Host A and B are registered to a RVS server, not 
			necessarily the same and each has the others RVS address.
		</li>
	</ul>
</section>
<section anchor="Shotgun" numbered="true" toc="default"> <name>Shotgunning UPDATEs</name>
<t>
	Shotgunning is the process of sending the same UPDATE to more than 
	one LOCATOR.  In particular it refers to sending the UPDATE to at 
	least the peer's last known IP address and to its RVS address 
	learned from the VIA_RVS for either the R1 or I2 packet.
</t>
<t>
	A host MUST be prepared to receive and discard multiple HIP 
	mobility UPDATEs. The duplicates will be readily identified as 
	having the same SEQ (UPDATE sequence number).
</t>
<t>
	Shotgunning SHOULD always be used when an RVS is known.  A peer 
	never knows of a "double-jump" event until after it receives its 
	peer's UPDATE.
</t>
</section>
<section anchor="SubB" numbered="true" toc="default"> <name>Neither host has data to transmit</name>
<t>
	Host A triggers a HIP mobility UPDATE with Locator to inform Host B 
	of new address.  Host B, upon validating Host A HIP UPDATE, 
	continues with Address Verification.
</t>
<t>
	No attempt should be made to piggyback the two UPDATE processes.  
	They may run simultaneously but not in the same IP datagrams.
</t>
</section>
<section numbered="true" toc="default"> <name>Either host has data to transmit</name>
<t>
	The following acceleration advice presents a number of challenges.  
	The best rule of thumb is to send the data as soon as possible.
</t>
<section numbered="true" toc="default"> <name>IPv6 datagram + HIP UPDATE &gt; MTU</name>
<t>
	Same process as <xref target="SubB" format="default"/>
</t>
</section>
<section numbered="true" toc="default"> <name>IPv6 datagram + HIP UPDATE &lt;= MTU</name>
<t>
	Host A sends HIP UPDATE with Locator to inform Host B of new 
	address.  Datagram is appended to HIP UPDATE using Next Header. 
	Host B, may have already sent a datagram with its original HIP 
	UPDATE.  If since then a receipt of Host A's UPDATE it has more 
	data to transmit, upon validating Host A HIP UPDATE, sends next 
	header to proper module and continues with Address Verification.  
	This datagram is processed even though the address is UNVERIFIED.
</t>
</section>
</section>
</section>
<section anchor="IANA" numbered="true" toc="default"> <name>IANA Considerations</name>
<t>
	This document does not have any IANA requirements.
</t>
</section>
<section numbered="true" toc="default"> <name>Security Considerations</name>
<t>
	The approach here is to start using the new address while it is 
	being validated.  One consequence is a few packets are lost or sent to a 
	wrong target.  These are acceptable risks while gaining a fast 
	address update that works in most cases.
</t>
<t>
	Another risk is there is a small window for malicious piggyback 
	packets received during this pre-validation interval.  But since 
	all such packets should be ESP protected, the ESP process will 
	catch these.
</t>
<t>
	Beyond these items, HIP fast mobility does not introduce any new 
	security considerations beyond that in <xref target="RFC8046" 
	format="default">HIP Host Mobility</xref>.  If anything its 
	requirement to know and use the RVS for a peer improve the 
	frequency of a successful mobility notification.
</t>
</section>
<section numbered="true" toc="default"> <name>Acknowledgments</name>
<t>
	The term "shotgun" for fast mobility comes from the InfraHIP 
	project.  The HIP UPDATE lengths were supplied by Jeff Ahrenholz.
</t>
<t>
	Sue Hares of Huawei and Jeff Ahrenholz of Tempered Networks 
	contributed to the clarity in this document.
</t>
</section>
</middle>
<back>
<references> <name>References</name>
<references title="Normative References">
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
</references>
<references title="Informative References">
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7402.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8004.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8046.xml"/>
</references>
</references>
</back>
</rfc>
