<?xml version="1.0" encoding="utf-8"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY RFC5795 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5795.xml">
<!ENTITY RFC5858 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5858.xml">
<!ENTITY RFC6830 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6830.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="exp" docName="draft-saldana-lisp-compress-mux-00" ipr="trust200811">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

<!-- ***** FRONT MATTER ***** -->
<front>
  <!-- The abbreviated title is used in the page header - it is only necessary if the 
        full title is longer than 39 characters -->
  <title abbrev="CM-LISP">Header compression and multiplexing in LISP</title>

  <!-- add 'role="editor"' below for the editors if appropriate -->
  <!-- Another author who claims to be an editor -->
  <author fullname="Jose Saldana" initials="J." surname="Saldana">
    <organization>University of Zaragoza</organization>
    <address>
      <postal>
        <street>Dpt. IEC Ada Byron Building</street>
        <!-- Reorder these if your country does things differently -->
        <city>Zaragoza</city>
        <region></region>
        <code>50018</code>
        <country>Spain</country>
      </postal>
      <phone>+34 976 762 698</phone>
      <email>jsaldana@unizar.es</email>
      <!-- uri and facsimile elements may also be added -->
    </address>
  </author>

  <author fullname="Julian Fernandez Navajas" initials="J." surname="Fernandez Navajas">
    <organization>University of Zaragoza</organization>
    <address>
      <postal>
        <street>Dpt. IEC Ada Byron Building</street>
        <!-- Reorder these if your country does things differently -->
        <city>Zaragoza</city>
        <region></region>
        <code>50018</code>
        <country>Spain</country>
      </postal>
      <phone>+34 976 761 963</phone>
      <email>navajas@unizar.es</email>
      <!-- uri and facsimile elements may also be added -->
    </address>
  </author>

  <author fullname="Jose Ruiz Mas" initials="J." surname="Ruiz Mas">
    <organization>University of Zaragoza</organization>
    <address>
      <postal>
        <street>Dpt. IEC Ada Byron Building</street>
        <!-- Reorder these if your country does things differently -->
        <city>Zaragoza</city>
        <region></region>
        <code>50018</code>
        <country>Spain</country>
      </postal>
      <phone>+34 976 762 158</phone>
      <email>jruiz@unizar.es</email>
      <!-- uri and facsimile elements may also be added -->
    </address>
  </author>
  
  <date month="May" year="2016" />
  <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
  in the current day for you. If only the current year is specified, xml2rfc will fill 
  in the current day and month for you. If the year is not the current one, it is 
  necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
  purpose of calculating the expiry date).  With drafts it is normally sufficient to 
  specify just the year. -->

  <!-- Meta-data Declarations -->
  <area>Routing</area>

  <workgroup>Locator/ID Separation Protocol Working Group</workgroup>
  <!-- WG name at the upperleft corner of the doc,
  IETF is fine for individual submissions.  
  If this element is not present, the default is "Network Working Group",
  which is used by the RFC Editor as a nod to the history of the IETF. -->

  <keyword>LISP</keyword>
  <keyword>multiplexing</keyword>
  <keyword>header compression</keyword>
  <keyword>optimization</keyword>
  <keyword>small-packet flows</keyword>
  <!-- Keywords will be incorporated into HTML output
  files in a meta tag but they have no effect on text or nroff
  output. If you submit your draft to the RFC Editor, the
  keywords will be used for the search engine. -->

  <abstract>
		<t>When small payloads are transmitted through a packet-switched network,
    the resulting overhead may result significant. This is stressed in the case
    of LISP, where a number of headers are prepended to a packet,
    as new headers have to be added to each packet.</t>
		
		<t>This document proposes to send together a number of small packets, which are in 
    the buffer of a ITR, having the same ETR as destination, into a single packet. 
    Therefore, they will share a single LISP header, and therefore bandwidth savings can
    be obtained, and a reduction in the overall number of packets sent to the network can
    be achieved.</t>
  </abstract>
</front>

<middle>
	<section title="Introduction">       
		<t>When small payloads are transmitted through a packet-switched network,
    the resulting overhead may result significant. This is stressed in the case
    of tunneling protocols, where a number of headers are prepended to a packet.</t>
      
    <t>The rate of small packets present in the Internet is significant
    <xref target="Simplemux_CIT"></xref>. First,
    TCP Acknowledgements (ACKs), which may have no payload, are sent in every TCP
    connection. In addition real-time services (VoIP, videoconferencing, 
		telemedicine, video surveillance, online gaming, etc.) with interactivity demands
    may generate a traffic profile consisting of 
		high rates of small packets, which are necessary in order to transmit frequent updates 
		between the two extremes of the communication. In addition, some other services also 
    use small packets as e.g., instant messaging, M2M packets sending collected data in sensor 
		networks or IoT scenarios using wireless or satellite links.</t>
      
    <t>In the case of LISP, this overhead may be stressed. As an example, 
    an IPv4 TCP ACK (40 bytes), with standard LISP over IPv4 requires 76 bytes (96 if
    IPv6 is used by one of the IP headers). Or an RTP packet with e.g. 20 bytes of payload, 
    using standard LISP over IPv4, requires 96 bytes (116 if IPv6 is used in one of the
    IP headers).</t>
      
    <t>Some methods have been proposed in order to reduce LISP's overhead, with the aim of
    avoiding MTU issues, as e.g. <xref target="I-D.boucadair-lisp-v6-compact-header"></xref>.</t>
		
		<t>When a number of small packets are in the buffer of a ITR, having the same
    ETR as destination, they can be sent together, sharing a single LISP header, and
    therefore obtaining three benefits: bandwidth savings, reduction in the number
    of packets, which may also be translated into a reduction of the overall energy 
    consumption of network equipment. According to <xref target="Efficiency"></xref>
    internal packet processing engines and switching fabric require 60% and 18% of the
    power consumption of high-end routers respectively. Thus, reducing the number of 
    packets to be managed will reduce the overall energy consumption. The measurements 
    deployed in 
		<xref target="Power"></xref> on commercial routers corroborate this: a study using 
		different packet sizes was presented, and the tests with big
		packets showed a reduction of the energy consumption, since a certain amount of
		energy is associated to header processing tasks, and not only to the sending
		of the packet itself.</t>

		<t>All in all, another trade-off appears: on the one hand, energy consumption is increased
		in the two extremes due to header compression processing; on the other hand, energy 
		consumption is reduced in the intermediate nodes because of the reduction of the number
		of packets transmitted. This tradeoff should be explored more deeply.</t>
      
    <section title="Requirements Language">
	    <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
	    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
	    document are to be interpreted as described in <xref
	    target="RFC2119">RFC 2119</xref>.</t>
		</section>
	</section>

  <section title="Native LISP and proposed solutions">
		<t>A LISP encapsulated packet, as defined in <xref target="RFC6830"></xref>, has the next structure 
    (<xref target="native_structure"></xref>):</t>   

    <figure align="center" anchor="native_structure" title="Structure of a LISP encapsulated packet">
      <preamble></preamble>
        <artwork align="left"><![CDATA[
+--+---+----+--+---+-------+
|OH|UDP|LISP|IH|TrH|payload|       
+--+---+----+--+---+-------+
|           |              |
<---LISP----><-----pkt----->
          ]]></artwork>
      <postamble></postamble>
    </figure>
      
    <t>Where each of the headers corresponds to:</t>
        
    <t><list style="symbols">
      <t>OH: The outer header containing RLOCs obtained from the ingress
        router's EID-to-RLOC Cache.</t>
    
      <t>UDP Header, as required by <xref target="RFC6830"></xref>. The destination port MUST be set to the
      IANA-assigned port value 4341.</t>
    
      <t>LISP-specific 8-octet header.</t>
      
      <t>IH is the Inner Header on the datagram
      received from the originating host. The source and destination IP
      addresses are EIDs.</t>
   
      <t>TrH: The Transport Header, i.e. a TCP, UDP or SCTP header.</t>
      
    </list>Note that <xref target="RFC6830"></xref> defines "LISP Header" as a set including: the outer IPv4 
    or IPv6 header; a UDP header; and a LISP-specific 8-octet header that follows the 
    UDP header.</t>

    <section title="Basic multiplexing method">
      <t>When a number of small packets (e.g. VoIP, TCP ACKs, etc.) are stored in
      the output buffer of an ITR, it MAY be possible to send a number of them into
      a single RLOC-space packet, thus reducing the overhead and the number of packets
      at the same time. This may have some additional benefits as the reduction of the
      amount of packets travelling between the ITR and the ETR may result in a reduction
      of the processing requirements in intermediate nodes, which may be transalted into
      certain energy savings.</t>
        
      <t>A very strightforward solution for multiplexing a number of EID-space packets
      into a single RLOC-space one is to just concatenate a number of IP packets after the
      LISP Header (see <xref target="simple_multiplexing"></xref>).</t>
        
      <t>One of the free bits in the LISP header should be used to flag the fact that
      more than a single packet is included in the encapsulated one.</t>

      <figure align="center" anchor="simple_multiplexing" title="Structure of a LISP packet encapsulating three IP packets">
        <preamble></preamble>
          <artwork align="left"><![CDATA[
+--+---+----+--+---+-------+--+---+-------+--+---+-------+
|OH|UDP|LISP|IH|TrH|payload|IH|TrH|payload|IH|TrH|payload|     
+--+---+----+--+---+-------+--+---+-------+--+---+-------+
|           |              |              |              |
<---LISP----><---pkt #1----><----pkt #2---><----pkt #3--->
            ]]></artwork>
        <postamble></postamble>
      </figure>
      
      <t>When an ETR receives a packet with the indication that it contains more than
      a single packet (this is achieved by using a port number different from 4341  
      in the UDP header preceding the LISP header), it first extracts all the 
      content after the LISP header, and then
      it uses the "Total Length" field of the Inner IP Header to know the length of the
      first packet. Once extracted, it removes the packet and assumes the next bytes
      correspond to the next IP Header, so it can subsequently extract all the included
      packets.</t>
    </section>

    <section title="Multiplexing method based on Simplemux">
      <t>If a Simplemux separator is placed after the LISP header, then a number of
      packets can be included, taking into account that the Simplemux separator includes
      a field expressing the length of the next packet.</t>
        
      <t>Simplemux <xref target="I-D.saldana-tsvwg-simplemux"></xref> is a simple multiplexing
      protocol that allows the inclusion of a whole packet belonging to any protocol
      (tunneled packet) into any tunneling protocol. It includes a Lenght field, expressing
      the length of the multiplexed packet, and a Protocol field, expressing the protocol
      to which the tunneled packet belongs. In the present case, LISP is used as
      the tunneling protocol.</t>
        
      <t>In this case, a port number different from 4341 should be used in the UDP header 
      preceding the LISP header, in order to indicate that the protocol inside the LISP
      header is not IP but Simplemux.</t>

      <figure align="center" anchor="simplemux_multiplexing" title="Structure of a LISP packet 
              encapsulating three IP packets separated with Simplemux">
        <preamble></preamble>
          <artwork align="left"><![CDATA[
+--+---+----+----+--+---+-------+----+--+---+-------+----+--+---+-------+
|OH|UDP|LISP|Smux|IH|TrH|payload|Smux|IH|TrH|payload|Smux|IH|TrH|payload|
+--+---+----+----+--+---+-------+----+--+---+-------+----+--+---+-------+
|           |                   |                   |                   |
<---LISP----><------pkt #1------><------pkt #2------><------pkt #3------>
            ]]></artwork>
        <postamble></postamble>
      </figure>  
    </section>
      
    <section title="Header compression and multiplexing method">
      <t>Taking into account that the inner packets are tunneled with LISP, a header compresion
      method can be used (ROHC <xref target="RFC5795"></xref>), in order to remove those fields 
      that are the same for every packet in a flow.</t>

      <t>ROHC (RObust Header Compression <xref target="RFC5795"></xref>) is able to compress UDP/IP, 
	    ESP/IP and RTP/UDP/IP headers. It is a robust scheme developed for header 
	    compression over links with high bit error rate, such as wireless ones. 
	    It incorporates mechanisms for quick resynchronization of the context, with 
	    an improved encoding scheme for compressing the header fields 
	    that change dynamically.</t>
        
      <t>The "Protocol" field of Simplemux allows the possibility of indicating that the
      packets are compressed with ROHC <xref target="RFC5795"></xref>. The protocol number 142
      is used for this, as defined in <xref target="RFC5858"></xref>.</t>

      <figure align="center" anchor="simplemux_rohc_multiplexing" title="Structure of a LISP packet 
              encapsulating three packets compressed with ROHC separated with Simplemux">
        <preamble></preamble>
          <artwork align="left"><![CDATA[
+--+---+----+----+----+-------+----+----+-------+----+----+-------+
|OH|UDP|LISP|Smux|RoHC|payload|Smux|RoHC|payload|Smux|RoHC|payload|
+--+---+----+----+----+-------+----+----+-------+----+----+-------+
|           |                 |                 |                 |
<---LISP----><-----pkt #1-----><-----pkt #2-----><-----pkt #3----->
            ]]></artwork>
        <postamble></postamble>
      </figure>               
    </section>
  </section>

  <section anchor="Acknowledgements" title="Acknowledgements">
    <t>Jose Saldana, Julian Fernandez Navajas and Jose Ruiz Mas were funded by the 
    EU H2020 Wi-5 project (Grant Agreement no: 644262).</t>
  </section>

  <!-- Possibly a 'Contributors' section ... -->

  <section anchor="IANA" title="IANA Considerations">
    <t>The present document proposes the use of a Simplemux separator after the LISP header,
    so a port number different from 4341 should be used in the UDP header preceding
    the LISP header.</t>
  </section>

  <section anchor="Security" title="Security Considerations"> 
    <t>No security issues have been identified.</t>
  </section>
    
</middle>

<!--  *****BACK MATTER ***** -->
<back>
  <!-- References split into informative and normative -->

  <!-- There are 2 ways to insert reference entries from the citation libraries:
  1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
  2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
    (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

  Both are cited textually in the same manner: by using xref elements.
  If you use the PI option, xml2rfc will, by default, try to find included files in the same
  directory as the including file. You can also define the XML_LIBRARY environment variable
  with a value containing a set of directories to search.  These can be either in the local
  filing system or remote ones accessed by http (http://domain/dir/... ).-->

  <references title="Normative References">

    &RFC2119;
    &RFC5795;
    &RFC5858;
    &RFC6830;

  </references>  
    <references title="Informative References">
     
      <reference anchor="Efficiency" target="">
        <front>
          <title>Energy Efficiency in the Future Internet: A Survey of Existing Approaches and Trends in
			Energy-Aware Fixed Network Infrastructures</title>
          <author initials="R." surname="Bolla">
            <organization>University of Genoa, Italy</organization>
          </author>
          <author initials="R." surname="Bruschi">
            <organization>University of Genoa, Italy</organization>
          </author>
          <author initials="F." surname="Davoli">
            <organization>University of Genoa, Italy</organization>
          </author>
          <author initials="F." surname="Cucchietti">
            <organization>Telecom Italia, Italy</organization>
          </author>
		  <date year="2011" />
        </front>
        <seriesInfo name="IEEE Communications Surveys and Tutorials" value="vol.13, no.2, pp.223,244" />
      </reference>
    
      <reference anchor="Power" target="">
        <front>
          <title>Power Awareness in Network Design and Routing</title>
          <author initials="J." surname="Chabarek">
            <organization>Univ. of Wisconsin-Madison, Madison, WI</organization>
          </author>
          <author initials="J." surname="Sommers">
            <organization>Univ. of Wisconsin-Madison, Madison, WI</organization>
          </author>
          <author initials="P." surname="Barford">
            <organization>Univ. of Wisconsin-Madison, Madison, WI</organization>
          </author>
          <author initials="C." surname="Estan">
            <organization>Univ. of Wisconsin-Madison, Madison, WI</organization>
          </author>
          <author initials="D." surname="Tsiang">
            <organization>Univ. of Wisconsin-Madison, Madison, WI</organization>
          </author>
          <author initials="S." surname="Wright">
            <organization>Univ. of Wisconsin-Madison, Madison, WI</organization>
          </author>
		  <date year="2008" />
        </front>
        <seriesInfo name="INFOCOM 2008. The 27th Conference on Computer 
        Communications. IEEE" value="pp.457,465" />
      </reference>

     <reference anchor="Simplemux_CIT" target="">
        <front>
          <title>Improving Network Efficiency with Simplemux</title>
          <author initials="J." surname="Saldana">
            <organization>University of Zaragoza, Spain</organization>
          </author>
          <author initials="I." surname="Forcen">
            <organization>University of Zaragoza, Spain</organization>
          </author>
          <author initials="J." surname="Fernandez-Navajas">
            <organization>University of Zaragoza, Spain</organization>
          </author>
          <author initials="J." surname="Ruiz-Mas">
            <organization>University of Zaragoza, Spain</organization>
          </author>
		  <date year="2015" />
        </front>
        <seriesInfo name="IEEE CIT 2015, International Conference on Computer and Information Technology" value=", pp. 446-453, 26-28 October 2015, Liverpool, UK" />
      </reference>
            
    <reference anchor="I-D.saldana-tsvwg-simplemux">
    <front>
    <title>Simplemux. A generic multiplexing protocol</title>
    <author initials="J" surname="Saldana" fullname="Jose Saldana">
    <organization/>
    </author>
    <date month="January" day="26" year="2015"/>
    <abstract>
    <t>
    There are some situations in which multiplexing a number of small packets into a bigger one is desirable. For example, a number of small packets can be sent together between a pair of machines if they share a common network path. Thus, the traffic profile can be shifted from small to larger packets, reducing the network overhead and the number of packets per second to be managed by intermediate routers. This document describes Simplemux, a protocol able to encapsulate a number of packets belonging to different protocols into a single packet. It includes the "Protocol" field on each multiplexing header, thus allowing the inclusion of a number of packets belonging to different protocols on a packet of another protocol. The size of the multiplexing headers is kept very low (it may be a single byte when multiplexing small packets) in order to reduce the overhead.
    </t>
    </abstract>
    </front>
    <seriesInfo name="Internet-Draft" value="draft-saldana-tsvwg-simplemux-02"/>
    <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-saldana-tsvwg-simplemux-02.txt"/>
    <format type="PDF" target="http://www.ietf.org/internet-drafts/draft-saldana-tsvwg-simplemux-02.pdf"/>
    </reference>
    
    <reference anchor="I-D.boucadair-lisp-v6-compact-header">
    <front>
    <title>
    A Compact LISP Encapsulation Scheme to Transport IPv4 Packets over an IPv6 Network
    </title>
    <author initials="M" surname="Boucadair" fullname="Mohamed Boucadair">
    <organization/>
    </author>
    <author initials="C" surname="Jacquenet" fullname="Christian Jacquenet">
    <organization/>
    </author>
    <date month="December" day="1" year="2015"/>
    <abstract>
    <t>
    The encapsulation scheme used by the Locator/ID Separation Protocol (LISP) may sometimes raise MTU issues at the cost of possibly degrading the overall performance of the LISP network, especially in IPv6 migration contexts. This document proposes a new, more compact, encapsulation scheme that aims to accommodate such issues and facilitate LISP deployment for IPv6 migration purposes, in particular.
    </t>
    </abstract>
    </front>
    <seriesInfo name="Internet-Draft" value="draft-boucadair-lisp-v6-compact-header-01"/>
    <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-boucadair-lisp-v6-compact-header-01.txt"/>
    </reference>
  </references>
</back>
</rfc>
