<?xml version="1.0" encoding="utf-8"?>
<!-- This can be converted using the Web service at https://xml2rfc.tools.ietf.org/ -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<!-- You want a table of contents -->
<?rfc symrefs="yes"?>
<!-- Use symbolic labels for references -->
<?rfc sortrefs="yes"?>
<!-- This sorts the references -->
<?rfc iprnotified="no" ?>
<!-- Change to "yes" if someone has disclosed IPR for the draft -->
<?rfc compact="yes"?>
<!-- This defines the specific filename and version number of your draft (and inserts the appropriate IETF boilerplate -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-li-native-short-addresses-00" ipr="trust200902" obsoletes="draft-jiang-asymmetric-ipv6-04" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="0">
  <!-- xml2rfc v2v3 conversion 2.44.0 -->
  <front>
    <title abbrev="Native Short Addresses">Native Short Addresses for the Internet Edge</title>
    <seriesInfo name="Internet-Draft" value="draft-li-native-short-addresses-00"/>
    <author fullname="Guangpeng Li" initials="G." surname="Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Q14, Huawei Campus</street>
          <street>No.156 Beiqing Road</street>
          <city>Hai-Dian District, Beijing</city>
          <code>100095</code>
          <country>P.R. China</country>
        </postal>
        <email>liguangpeng@huawei.com</email>
      </address>
    </author>
    <author fullname="Sheng Jiang" initials="S." surname="Jiang">
      <organization>Huawei Technologies Co., Ltd</organization>
      <address>
        <postal>
          <street>Q14, Huawei Campus, No.156 Beiqing Road</street>
          <city>Hai-Dian District, Beijing, 100095</city>
          <country>P.R. China</country>
        </postal>
        <email>jiangsheng@huawei.com</email>
      </address>
    </author>
    <author fullname="Donald Eastlake 3rd" initials="D." surname="Eastlake 3rd">
      <organization abbrev="Futurewei">Futurewei Technologies</organization>
      <address>
        <postal>
          <street>2386 Panoramic Circle</street>
          <street>Apopka</street>
          <city>FL 32703</city>
          <region/>
          <code>32703</code>
          <country>United States of America</country>
        </postal>
        <email>d3e3e3@gmail.com</email>
      </address>
    </author>
    <!-- <author fullname="Brian Carpenter" initials="B. E." surname="Carpenter">
      <organization abbrev="Univ. of Auckland">The University of Auckland</organization>
      <address>
        <postal>
          <street>School of Computer Science</street>
          <street>University of Auckland</street>
          <street>PB 92019</street>
          <city>Auckland</city>
          <region/>
          <code>1142</code>
          <country>New Zealand</country>
        </postal>
        <email>brian.e.carpenter@gmail.com</email>
      </address>
    </author> -->
    <date day="20" month="February" year="2021"/>
    <abstract>
      <t>This document describes a new approach to IP header compression including native short addresses adoption for use in
      scenarios where minimizing packet size is crucial but routing performance must be
      maximised.
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
     The large address space of IPv6 is essential for the massive
     expansion of the network edge that will be caused by "Internet of Things" (IoT)
     technology over low-power or 5G links. However, the size of a raw IPv6
     packet header causes difficulty
     due to the small maximum transmission units (MTU) allowed by typical low-power,
     low-cost link layers. For 5G, the importance of header overhead in small packets is discussed in
     <xref target="NGMN-5G" format="default"/>.     
     Thus header compression, including address compression,
     is an important issue. This decreases the size of raw packets, but compressed
     IP addresses are not routeable except by decompressing them completely in
     every forwarding node. There are two issues here. The first is the extra
     computation resource needed for compressing or decompressing in constrained
     IoT nodes. The second is that full-length IPv6 routing will consume more memory
     to store routing tables and packet queues (assuming that routing is not bypassed
     by tunnelling). Such resource consumption is very
     undesirable in constrained nodes with limited storage, CPU power, and battery
     capacity.</t>
      <t>To mitigate these issues, here we propose a solution enabling the shortening
     of IPv6 addresses inside packets, and the routing of packets according to short
     addresses, without needing the overhead of a decompression step prior to route lookup.
     Considering that the scale and
     size of edge networks may vary widely, different lengths of short address can be
     used in different domains. 
      </t>
      <t>As an illustrative example, consider an edge network which is known
     to never require more than a few hundred nodes, which in most cases will communicate
     either with each other, or with application layer gateways to the rest of the
     Internet. Rather than needing 128-bit addresses, such a network could very well
     operate with 16-bit addresses. Also, it could very likely operate without needing
     enhancements such as differentiated services, ECN or flow labels. If only IPv6 is
     supported, the version number field is pointless. There is no
     reason for IPv6 packets within such a network to contain 40-byte headers as
     specified in <xref target="RFC8200" format="default"/>.  Therefore,
     the useful information could be carried in 8 bytes (see <xref target="eightbytes" format="default"/>).
     Furthermore, routers within the edge network can route packets directly on 16-bit addresses,
     reducing RIB and FIB sizes and the lookup time.</t>
      <figure anchor="eightbytes">
        <artwork name="" type="" align="left" alt=""><![CDATA[ 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload Length        |  Next Header  |   Hop Limit   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Source Address        |  Destination Address          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
      </figure>
      <t>This work is distinct from previous work on address compression
     <xref target="RFC6282" format="default"/> <xref target="RFC7400" format="default"/>. Although those solutions
     tackle the problem of small MTU size, they do not address the problem of
     decompression overhead.</t>
      <t>This work is also distinct from the work on static context header
     compression <xref target="RFC8724" format="default"/>,
     as discussed in more detail below.</t>
      <t>Finally, this work is distinct from the 6LoWPAN Routing Header
     <xref target="RFC8138" format="default"/>, which can support truncated addresses in a
     different way.</t>
    </section>
    <section anchor="solution" numbered="true" toc="default">
      <name>Proposed Solution</name>
      <t>The use of IPv6 naturally implies 128-bit addresses for both source
    and destination. However, this address size is huge by the standards of
    IoT edge networks. We propose the use of a context parameter to indicate
    the effective length of the IP address for every node in a local domain.
    If the effective length is N bits, then all addresses in the domain are
    assumed to be preceded by a common prefix of 128-N bits, when a full
    size IPv6 address is needed. Any node in the domain that needs the full
    address, such as a gateway node to the Internet, can therefore easily
    synthesize it. If a client communicates with a server that is in the
    local domain, short addresses will be used end-to-end.</t>
      <t>The address length parameter may be needed by every node in the domain.
    It can be spread by various techniques:
      </t>
      <ul spacing="normal">
        <li>Configure the address length in every node.</li>
        <li>Obtain the address length from a gateway (next hop router) node.</li>
        <li>Negotiate the address length between neighbors.</li>
      </ul>
      <t>
    The solution operates by shortening IP address fields to save overhead. To
    enhance this, we propose a new field named Flexible Header Encoding (FHE).
    It consists of 8 bits, each indicating whether the corresponding IPv6 header
    field <xref target="RFC8200" format="default"/> exists.
      </t>
      <ul spacing="normal">
        <li>Bit 0 indicates the Modified Version field</li>
        <li>Bit 1 indicates the Traffic Class field</li>
        <li>Bit 2 indicates the Flow Label field.</li>
        <li>Bit 3 indicates the Payload Length field.</li>
        <li>Bit 4 indicates the Next Header field. (Zero implies "No Next Header", value 59)</li>
        <li>Bit 5 indicates the Hop Limit field.</li>
        <li>Bit 6 indicates the Source Address field.</li>
        <li>Bit 7 indicates the Destination Address field.</li>
      </ul>
      <t>    
    
    The "Version" field is a special case. In the context of FHE, all packets are
    presumed to be IPv6 so the normal version field has no purpose.  The Modified
    Version field, if present, has the following encoded meanings:
      </t>
      <ul spacing="normal">
        <li>0b0000: The source address (if it exists) has pre-determined length
    inside the domain and the destination address (if it exists) uses 
    standard 128-bit IPv6 address. (Outward traffic)</li>
        <li>0b0001: The source address (if it exists) uses standard 128-bit
    IPv6 address and the destination address (if it exists) has pre-determined
    length inside the domain. (Inward traffic)</li>
        <li>0b0010: The source address and destination address have the
    same length inside the domain. The address length will be pre-determined.</li>
        <li>0b0110: Reserved for IPv6 compatible case.</li>
        <li>0b0100: Reserved for IPv4 compatible case.</li>
        <li>0b0011~0b1111(except 0b0110, 0b0100): Reserved.</li>
      </ul>
      <t>
    All fields, including the Modified Version field, follow the FHE
    in the same order as in <xref target="RFC8200" format="default"/>, with no padding.
    There are no alignment requirements, but when a packet is decompressed
    to a normal IPv6 format, padding options as defined in RFC8200 must be inserted.
      </t>
      <t>Compared to the illustrative example in <xref target="eightbytes" format="default"/>,
    the actual packet size would therefore be 10 bytes, a considerable improvement
    on the standard 40 bytes. This method of shortening packets by using the FHE header is called Asymmetric IPv6.</t>
      <t>One implication of the above is that the source and destination addresses
    may be elided completely if they are implicit. Sourceless packets
    were originally suggested in <xref target="Crowcroft" format="default"/>.</t>
      <t><xref target="form-fig" format="default"/> illustrates an example of the FHE format.
    In this example the traffic class, flow label and source address are
    elided, and the destination address is truncated to 16 bits. The modified
    version field could be 0b0001 or 0b0010.

      </t>
      <figure anchor="form-fig">
        <artwork name="" type="" align="left" alt=""><![CDATA[
                                                      FHE octet
    Modified                                       +-+-+-+-+-+-+-+-+
    Version                                        |1 0 0 1 1 1 0 1|                
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0 0 0 1|       Payload Length          |  Next Header  |  Hop  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Limit | Truncated Destination Address |                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                       |
   |                                                               |
   +               Transport payload                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.........
 ]]></artwork>
      </figure>
      <t>Note that Asymmetric IPv6 does not contain any special handling
    for IPv6 fragmentation, which will operate exactly as described in
    <xref target="RFC8200" format="default"/>, with Asymmetric IPv6 applied to each
    fragment packet. However, we assume that in IoT deployment scenarios,
    packets whose length exceeds the IPv6 minimum link MTU before applying
    Asymmetric IPv6 will be rare. If the underlying link layer cannot
    carry complete packets even after applying Asymmetric IPv6 compression,
    an adaptation layer will be necessary exactly as for normal IPv6. 
      </t>
    </section>
    <section anchor="gateway" numbered="true" toc="default">
      <name>Address Transformation at the Gateway</name>
      <t>Truncated intra-domain addresses will be used to identify nodes
    inside the domain. When a packet is sent from an IoT node to an external
    IPv6 host , the node's intra-domain address, which is unique in
    the domain, will be carried in the source address field. When the
    packet is forwarded outside the domain by a gateway, the intra-domain
    address will be transformed to a complete IPv6 address. To achieve this,
    the gateway should will maintain a globally routeable prefix for all
    the nodes in the domain. When a packet with an intra-domain source
    address is received, the gateway extracts this address and 
    concatenates it to the prefix to form a standard, globally unique
    IPv6 address. Vice versa, when IPv6 packets are received from the Internet,
    the prefix will be removed to recover the intra-domain short address.</t>
      <t>There are two options for handling the addresses of external
    hosts within the domain. One is to use their full IPv6 addresses
    via Modified Version codes 0b0000 and 0b0001. The other is
    effectively a specialized form of Network Address Translation.
    Here, the gateway will maintain a dynamic mapping table between
    synthetic intra-domain addresses and IPv6 addresses. As packets
    are received, the gateway performs the appropriate mapping.
    The transformation must be checksum-neutral for the transport
    layer, so the methods designed for NAT46 should be adapted
    <xref target="RFC6145" format="default"/>.</t>
      <t>It is an engineering choice
    whether this method is preferable to carrying full 128-bit
    addresses on the IOT side. Which type of resource is more expensive 
    should be seriously considered to choose the appropriate ways, e.g. computing, memory,
     or transmiting in various resource-constrained IoT networks. </t>
    </section>
    <section anchor="routing" numbered="true" toc="default">
      <name>Routing without Decompression</name>
      <t>Routing mechanisms may readily be adapted to truncated address sizes.
    If there is routing with an FHE domain, we assume that the truncated
    address size will be split into a prefix and an interface identifier,
    but this will not be at the traditional /64 boundary. If routing between
    different length addresses is required, a suitably modified 
    Forwarding Information Base (FIB) structure is needed, as
    for any variable length addressing scheme. A truncated
    address needs to be virtually expanded to 128 bits at the router's
    inbound interface, although this may not be the physical implementation.</t>
      <t>A possible routing choice for IOT edge networks is RPL <xref target="RFC6550" format="default"/>,
    although a more complete survey can be found in <xref target="Talwar" format="default"/>.</t>
    </section>
    <section anchor="addressing" numbered="true" toc="default">
      <name>Address Configuration</name>
      <t>The simplest approach to address configuration is simply to run normal IPv6 procedures
    (SLAAC or DHCPv6), on the argument that this is a rare process and the overhead
    does not matter. If the truncated address size is less than 64 bits, it will be necessary
    to use shorter interface identifiers than normal, but this is not a major change. Once a node
    has acquired an IPv6 address and has learned the local address length parameter
    as outlined in <xref target="solution" format="default"/>, it can continue in FHE mode.
      </t>
    </section>
    <section anchor="compatibility" numbered="true" toc="default">
      <name>Compatibility with Existing Protocols</name>
      <t>Although FHE nodes can only talk directly to each other, they are essentially
    a special form of IPv6 node and they can communicate with the whole IPv6 Internet
    via gateways. The complexity is not greater than 6LoWPAN. If appropriate, the 6LoWPAN
    adaptation layer <xref target="RFC4944" format="default"/> could be used, 
    with a specific dispatch type.
      </t>
    </section>
    <section anchor="SCHC" numbered="true" toc="default">
      <name>Relationship to Static Context Header Compression</name>
      <t>Static Context Header Compression (SCHC) <xref target="RFC8724" format="default"/>
    is a powerful mechanism for reducing IPv6 packet size in an IoT application environment.
    In particular it includes a profile for UDP over IPv6, and a somewhat modified version
    of this profile could achieve much of what Asymmetric IPv6 proposes. In addition, SCHC
    provides support for fragmentation in the case of very small link MTUs. However, SCHC is by
    design static, and once a context is established the fields to be compressed
    do not change. Asymmetric IPv6 transmits the FHE and Modified Version bytes
    with every packet, so it provides dynamic choice as to which header elements are compressed
    or elided.
      </t>
      <t>In a context where the desirable compression is fixed, e.g. every address is the
    same length, the flow label is never used, etc., SCHC can used to the same effect as
    Asymmetric IPv6. However, if the behavior needs to be dynamic, the signaling power
    of the FHE and Modified Version bytes in Asymmetric IPv6 is needed.</t>
      <t>Further study is needed whether the advantages of the two mechanisms can be combined.</t>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>FHE is essentially only a non-cryptographic compression technique so it neither adds to nor
      reduces the intrinsic security of an IPv6 packet. The address length parameter is not
      a secret, since all nodes in the domain must know it. The mechanism for distributing
      this parameter must be no less secure than any other configuration mechanism in use.</t>
      <t>Address-based privacy issues must be considered in deciding on the address length.
      If the number of bits available for the interface identifier is significantly less
      than the 64 currently in use, address traceability and guessability will be affected.
      However, if the traffic with short addresses is confined to within the edge network,
      the privacy issue will be minimized.
      <xref target="RFC7721" format="default"/> and <xref target="RFC7217" format="default"/> should be consulted prior to deciding
      the address length.
      </t>
    </section>
    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document makes no request of the IANA. </t>
      <t>NOTE IN DRAFT:  If the solution of a 6LoWPAN dispatch type
      is adopted, a suitable assignment request will be added. </t>
      <t/>
    </section>
    <!-- <section anchor="contr" title="Contributors">
      <t>X made important contributions to this document.
      </t>
    </section> -->
    <section anchor="contr" numbered="true" toc="default">
      <name>Contributors</name>
      <t>Brian Carpenter as one of the authors of draft-jiang-asymmetric-ipv6 directly contributes to the former draft's all sections, especially for polishing of introduction and solution's description. As his will, this draft absorbs most of the results and will go further regarding him as the most important contributor.
      </t>
    </section>
    <section anchor="ack" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>Useful comments were received from
      Uma Chunduri,
      Cheng Li,
      Pascal Thubert,
      Laurent Toutain
      and others.
      </t>
    </section>
  </middle>
  <back>
    <!-- <references title="Normative References">

    </references> -->

    <!-- <references title="Informative References"> -->
    <references>
      <name>References</name>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6282.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7400.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7721.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7217.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4944.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6550.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6145.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8138.xml"/>
      <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8724.xml"/>
      <reference anchor="Talwar">
        <front>
          <title>Routing Techniques and Protocols for Internet of Things: a Survey</title>
          <seriesInfo name="Indian J.Sci.Res." value="12(1):417-423"/>
          <author initials="M." surname="Talwar"/>
          <date year="2015"/>
        </front>
      </reference>
      <reference anchor="Crowcroft">
        <front>
          <title>SNA: Sourceless Network Architecture</title>
          <seriesInfo name="University of Cambridge Computer Laboratory Technical Report" value="UCAM-CL-TR-849"/>
          <author initials="J." surname="Crowcroft"/>
          <author initials="M." surname="Bagnulo"/>
          <date year="2014"/>
        </front>
      </reference>
      <reference anchor="NGMN-5G">
        <front>
          <title>5G Extreme Requirements: Operators' views on fundamental trade-offs</title>
          <seriesInfo name="NGMN Alliance" value=" "/>
          <author initials="I." surname="Thibault"/>
          <date year="2017"/>
        </front>
      </reference>
      
    </references>
    
    <section anchor="changes" numbered="true" toc="default">
      <name>Change log [RFC Editor: Please remove]</name>
      <ul>
      <li><t>draft-jiang-asymmetric-ipv6-00, 2019-06-03:</t>
       <ul><li>Initial version</li></ul></li>
       
      <li><t>draft-jiang-asymmetric-ipv6-01, 2019-06-21:</t>
       <ul><li>Fixed reference error</li></ul></li>
       
      <li><t>draft-jiang-asymmetric-ipv6-02, 2019-10-29:</t>
       <ul><li>Added illustrative example</li>
       <li>Discussed fragmentation</li>
       <li>Discussed relationship to SCHC</li>
       <li>Fixed bit pattern errors</li></ul>
      </li>
      
      <li><t>draft-jiang-asymmetric-ipv6-03, 2020-05-15:</t>
       <ul>
       <li>Minor technical and editorial fixes</li>
       <li>Converted to xml2rfc v3</li></ul>
      </li>

       <li><t>draft-jiang-asymmetric-ipv6-04, 2020-11-15:</t>
       <ul>
       <li>Explicitly limit the scope to resource-constrained domain</li>
       <li>Add engineering choice considerations accordingly</li>
      </ul>
      </li>
	  
	  <li><t>draft-li-native-short-addresses-00, 2021-02-20:</t>
       <ul>
       <li>Change title to emphase the actual case of asymmetric IPv6</li>
       <li>Add new author and move one author to contributors section</li>
      </ul>
      </li>  
      </ul>
    </section>
  </back>
</rfc>
