<?xml version='1.0' encoding='ascii'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.24 -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc ipr="trust200902" docName="draft-robinson-intarea-mcphint-00" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en">

  <front>
    <title abbrev="MCPHINT">Multiple Core Performance Hint Option</title>

    <author initials="H." surname="Robinson" fullname="Herb Robinson">
      <organization>Stratus Technologies, Inc.</organization>
      <address>
        <postal>
          <street>5 Mill &amp; Main Place, Suite 500</street>
          <city>Maynard</city>
          <region>Massachusetts</region>
          <code>1004</code>
          <country>USA</country>
        </postal>
        <email>Herbie.Robinson@stratus.com</email>
        <uri>https://www.stratus.com/</uri>
      </address>
    </author>

    <date year="2022" month="May" day="26"/>

    
    
    

    <abstract>


<t>This standard defines a method for differentiating between unrelated data
streams when the source and destination ports are encrypted.  This method
MAY be used by hardware or software to evenly distribute incoming workload
between multiple CPU cores and/or other processing elements.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction" numbered="true" toc="default">

<t>The Internet protocol allows datagrams to be re-ordered.  Protocols which
require datagrams to be ordered must retain out of order datagams until
preceding datagrams have been received.  While this works, the effect of
out of order datagrams on network performance is highly detrimental:
Out of order packets at first appear to be packet loss from the receivers 
point of view.  The perceived packegt loss can trigger unneeded retransmission
and delays from TCP and any other protocol which uses packet loss to implement 
congestion control.</t>

<t>With the advent of 10Gbit transmission speeds, it is not possible for a
single CPU core to keep up with the incoming data running at full line speed.
Hardware vendors have implemented mechanisms to distribute incoming datagrams
to multiple CPU cores.  If they did this on a random or round-robin basis,
the different latencies between the multiple cores would result in datagram 
re-ordering, which can severly impact performance.  Hardware solves this
problem by distributing the data deterministically between CPU cores:
This is done using a hash of the source and destination IP addresses and the
source and destination port numbers.  Using just the source and destination
IP addresses is not sufficient, because the resulting traffic will often go to
a single CPU core.</t>

<t>A performance problem arises when handling IPSec traffic:  The port numbers
are encrypted and can no longer be read by the hardware.</t>

<t>The performance problem also occurs with fragmented datagrams:  The
port numbers are only in the first fragment.</t>

<t>This standard defines IPv4 and IPv6 options to provide differentiation that 
can be used to distribute incoming datagrams to multiple CPU cores.</t>

<section anchor="requirements-language" title="Requirements Language" numbered="true" toc="default">

<t>The key words &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;,
&#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8220;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this
document are to be interpreted as described in BCP 14, RFC 2119
<xref target="RFC2119" pageno="false" format="default"/>.</t>

</section>
</section>
<section anchor="ipv4-option-format" title="IPv4 Option Format" numbered="true" toc="default">

<t>A host transmitting an IPv4 datagram MAY add an MCPHINT option to the IPv4 
header under any of the following circumstances:</t>

<t><list style="symbols">
  <t>The datagram contains an AH or ESP header.</t>
  <t>The datagram is fragmented.</t>
  <t>The datagram is to be transmitted beyond the current subnet and the don&#8217;t
fragment bit is not set.</t>
</list></t>

<t>The MCPHINT option provides 2 bytes of differentiation data.  If present, 
the MCPHINT option MUST occur first &#8211; at offset 20 from the beginning of 
the IPv4 header.</t>

<t>The MCPHINT option MUST NOT be used with upper layer protocols which do not have 
unique identifiers beyond the IPv4 source and destination address.</t>

<t>The datagram MUST NOT be for the ICMP protocol.</t>

<t>The format of the IPv4 MCPHINT options is:</t>

<figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |  Length = 4   |  Differentiation Data         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    Type = TBD_IP4OPT_MCPHINT
</artwork></figure>

<t>Refer to RFC0791 <xref target="RFC0791" pageno="false" format="default"/> for more information about IP options.</t>

<t>If there is a mechanism by which an application can provide IPv4 options
for transmission and that mechanism is used to provide an MCPHINT option,
the value provided by the application MUST be used.</t>

<t>The macro OPT_MCPHINT MAY be added to netinet/in.h defined as 
TBD_IP4OPT_MCPHINT.</t>

</section>
<section anchor="ipv6-option-format" title="IPv6 Option Format" numbered="true" toc="default">

<t>A host transmitting an IPv6 datagram MAY add an MCPHINT option under any of 
the following circumstances:</t>

<t><list style="symbols">
  <t>The datagram contains an AH or ESP header.</t>
  <t>The datagram will be fragmented.</t>
</list></t>

<t>The MCPHINT option MUST be added to a destination options header.
The MCPHINT option provides 2 bytes of differentiation data.  The 
Destination options header is defined in section 4.6 of RFC8200 <xref target="RFC8200" pageno="false" format="default"/>.</t>

<t>If present, the MCPHINT option MUST occur first in the first destination 
options header &#8211; normally at offset 42 from the beginning of the IPv6 header.</t>

<t>Note that RFC8200 <xref target="RFC8200" pageno="false" format="default"/> requires that per fragment destination headers
to be followed by a routing header.  If one applies this hint to a packet
containing an IPv6 fragmentation header, a routing header must be included.
RFC8200 <xref target="RFC8200" pageno="false" format="default"/> explicitly states that a routing header with zero
&#8220;Segments Left&#8221; is always ignored; so, this is possible.</t>

<t>The MCPHINT option MUST NOT be used with upper layer protocols which do not have 
unique identifiers beyond the IPv6 source and destination address.</t>

<t>The datagram MUST NOT be for the ICMP6 protocol.</t>

<t>The format of the IPv6 MCPHINT options is:</t>

<figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |  Data Len = 2 |   Differentiation Data        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    Type = TBD_IP6OPT_MCPHINT
</artwork></figure>

<t>If there is a mechanism by which an application can provide destination options
for transmission and that mechanism is used to provide an MCPHINT option,
the value provided by the application MUST be used.</t>

<t>The macro IP6OPT_MCPHINT MAY be added to netinet/ip6.h defined as 
TBD_IP6OPT_MCPHINT.</t>

</section>
<section anchor="differentiation-data" title="Differentiation Data" numbered="true" toc="default">

<t>For both IPv4 and IPv6, there is two bytes of differentiation data.  The
differentiation data MUST NOT be zero.  The differentation data MUST be the 
same for all datagrams in a logical stream.  The actual value chosen for 
differentiation data is left to the implementation.</t>

<t>A preferable mechanism would be to generate two bytes of random data when a
socket is created and to use that data for the life of the socket.  The
random data could be updated every time a connection is specified.</t>

<t>Alternatively, exclusive or&#8217;ing the source and destination ports is an 
acceptable method for generating the differentiation data.</t>

</section>
<section anchor="forwarding" title="Forwarding" numbered="true" toc="default">

<t>Forwarding is already defined to pass through unknown options.</t>

</section>
<section anchor="tunneling" title="Tunneling" numbered="true" toc="default">

<t>Tunneling implementations MAY copy the MCPHINT option from the datagrams
being tunneled to the outer headers.</t>

</section>
<section anchor="parsing-input-datagrams" title="Parsing Input Datagrams" numbered="true" toc="default">

<section anchor="ipv4" title="IPv4" numbered="true" toc="default">

<t>Refer to section 3.1 in RFC0791 <xref target="RFC0791" pageno="false" format="default"/>.  The input parsing algorithm for 
detecting the presence of differentiation data is</t>

<figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
 o IHL MUST be greater than or equal to 6 
 o The byte at offset 20 MUST be TBD_IP4OPT_MCPHINT
</artwork></figure>

<t>If those checks pass, then the differentation data can be found at offset 22.</t>

</section>
<section anchor="ipv6" title="IPv6" numbered="true" toc="default">

<t>Refer to sections 3, 4.2 and 4.6 in RFC8200 <xref target="RFC8200" pageno="false" format="default"/>.  The input parsing 
algorithm for detecting the presence of differentiation data is</t>

<figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
 o Next Header (offset 6) MUST be 60 (for destination options). 
 o The byte at offset 42 MUST be TBD_IP6OPT_MCPHINT
</artwork></figure>

<t>If those checks pass, then the differentation data can be found at offset 44.</t>

</section>
</section>
<section anchor="future-considerations" title="Future Considerations" numbered="true" toc="default">

<t>A future revision of this standard could allow the differentation data to be
longer as long as the first two bytes are generated the same way.</t>

<t>A future revision of this standard could add fields to this option.</t>

</section>
<section anchor="security-considerations" title="Security Considerations" numbered="true" toc="default">

<t>The MCPHINT option provides some minimal insight to internal network 
configurations that wouldn&#8217;t otherwise be discernable for IPSec tunnels.</t>

<t>Xor&#8217;ing the port numbers to obtain differentiation data provides
slightly more information than using random data.</t>

<t>The implementation MUST provide an adminitrative mechanism to disable
the use of MCPHINT options.</t>

<t>If the implementation implements both random generation of differentiation
data AND uses the Xor&#8217;ing ports method, there MUST be separate
administrative mechanisms for each method.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations" numbered="true" toc="default">

<t>IANA is asked to assign a value for TBD_IP4OPT_MCPHINT under 
<eref target="https://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml#ip-parameters-1">&#8220;Internet Protocol Version 4 (IPv4) Parameters&#8221;, &#8220;IP Option Numbers&#8221;</eref>, 
Refer to RFC2780 <xref target="RFC2780" pageno="false" format="default"/> and RFC0791 <xref target="RFC0791" pageno="false" format="default"/>.</t>

<t>The Copy bit MUST be 1 and the class bits MUST be 00.</t>

<t>IANA is asked to assign a value for TBD_IP6OPT_MCPHINT under
<eref target="https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml#ipv6-parameters-2">&#8220;Internet Protocol Version 6 (IPv6) Parameters&#8221;, 
&#8220;Destination Options and Hop-by-Hop Options&#8221;</eref>,
Refer to RFC2780 <xref target="RFC2780" pageno="false" format="default"/> and RFC8200 <xref target="RFC8200" pageno="false" format="default"/>.</t>

<t>The act bits MUST 00 and the chg bit MUST be 0</t>

</section>
<section anchor="appendix-a-design-considerations" title="Appendix A &#8211; Design Considerations" numbered="true" toc="default">

<t>This is done as an option so it may be added without affecting implementations
that don&#8217;t implement it.</t>

<t>Use with ICMP and ICMPv6 is prohibited because there is no reason to optimize
them and, given that correct IP layer behavior depends on thier transmission,
it is best to avoid anything that might interfere with correct operation..</t>

<t>One should note that when using this option with IPSec, the same security 
association is likely to be processed on multiple CPU cores.  This requires 
a good locking design to acheive the desired performance improvement.  It also
requires much larger replay windows.</t>

<section anchor="ip-nofification" title="IP Nofification" numbered="true" toc="default">

<t>Stratus has applied for a patent on this.  Stratus intends to allow use of 
the patent free of charge.  I will be filing the appropriate formal 
notification as soon as I figure out what it is and get it signed by the 
appropriate management.</t>

</section>
<section anchor="issues-to-resolve" title="Issues To Resolve" numbered="true" toc="default">

<t>My original writeup of this put the new IPv6 option in the Hop-by-Hop header,
because that is always ensured to be a per fragment header.  The option was 
moved to the destination options header given the advice in section 4.8 of 
RFC8200 <xref target="RFC8200" pageno="false" format="default"/>.<vspace blankLines="0"/>
Section 4.5 of RFC8200 <xref target="RFC8200" pageno="false" format="default"/> explicitly states that there are only the following combinations of per
fragment headers:</t>

<figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
 IPv6 Header
 IPv6 Headar, Hop-by-Hop Header
 IPv6 Header, Destination Options Header, Routing Header
 IPv6 Header, Hop-by-Hop Header, Dest Options Header, Routing Header
</artwork></figure>

<t>This implies that getting MCPHINTs into a fragmented header will require
the insertion of a null routing header if one isn&#8217;t present (which is the
normal case).</t>

<t>So, I am wondering if I was mislead by section 4.8 in RFC8200 <xref target="RFC8200" pageno="false" format="default"/>
and this option really belongs in the hop-by-hop header?</t>

<t>I see that some other drafts have picked new values for option numbers and 
instructed the IANA to allocate specific numbers.  I like this idea.
Can anyone recommend deprected values which could be assigned without
getting into trouble?</t>

</section>
</section>


  </middle>

  <back>

    <references title="Normative References">

<reference anchor="RFC0791" target="https://www.rfc-editor.org/info/rfc791" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml" quote-title="true">
<front>
<title>Internet Protocol</title>
<author initials="J." surname="Postel" fullname="J. Postel"><organization/></author>
<date year="1981" month="September"/>
</front>
<seriesInfo name="STD" value="5"/>
<seriesInfo name="RFC" value="791"/>
<seriesInfo name="DOI" value="10.17487/RFC0791"/>
</reference>
<reference anchor="RFC8200" target="https://www.rfc-editor.org/info/rfc8200" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml" quote-title="true">
<front>
<title>Internet Protocol, Version 6 (IPv6) Specification</title>
<author initials="S." surname="Deering" fullname="S. Deering"><organization/></author>
<author initials="R." surname="Hinden" fullname="R. Hinden"><organization/></author>
<date year="2017" month="July"/>
<abstract><t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t></abstract>
</front>
<seriesInfo name="STD" value="86"/>
<seriesInfo name="RFC" value="8200"/>
<seriesInfo name="DOI" value="10.17487/RFC8200"/>
</reference>
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml" quote-title="true">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="S. Bradner"><organization/></author>
<date year="1997" month="March"/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC2780" target="https://www.rfc-editor.org/info/rfc2780" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2780.xml" quote-title="true">
<front>
<title>IANA Allocation Guidelines For Values In the Internet Protocol and Related Headers</title>
<author initials="S." surname="Bradner" fullname="S. Bradner"><organization/></author>
<author initials="V." surname="Paxson" fullname="V. Paxson"><organization/></author>
<date year="2000" month="March"/>
<abstract><t>This memo provides guidance for the IANA to use in assigning parameters for fields in the IPv4, IPv6, ICMP, UDP and TCP protocol headers.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name="BCP" value="37"/>
<seriesInfo name="RFC" value="2780"/>
<seriesInfo name="DOI" value="10.17487/RFC2780"/>
</reference>


    </references>




  </back>

<!-- ##markdown-source:
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
r8hbzTscsFPIwL8U/wF5NNgz7isAAA==

-->

</rfc>
