<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<rfc
      xmlns:xi="http://www.w3.org/2001/XInclude"
      category="info"
      docName="draft-kang-quic-oneway-delays-in-multipath-01"
      ipr="trust200902"
      obsoletes=""
      updates=""
      submissionType="IETF"
      xml:lang="en"
      tocInclude="true"
      tocDepth="4"
      symRefs="true"
      sortRefs="true"
      version="3">
 <front>
   <title abbrev="Abbreviated Title">Comparing One-way Delays in Multipath</title>
    <seriesInfo name="Internet-Draft" value="draft-kang-quic-oneway-delays-in-multipath-01"/>
	
	<author fullname="Jiao Kang" initials="J." surname="Kang">
      <organization>Huawei</organization>
      <address>
        <email>jiao_kang2022@163.com</email>
     </address>
    </author>
	
	<author fullname="Qiandeng Liang" initials="Q." surname="Liang">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>No. 207, Jiufeng 3rd Road, East Lake High-tech Development Zone</street>
          <city>Wuhan</city>
          <country>China</country>
        </postal>
        <email>liangqiandeng@huawei.com</email>
     </address>
    </author>
	
	<author fullname="Shangling Deng" initials="S." role="editor" surname="Deng">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>D2-03,Huawei Industrial Base</street>
          <city>Shenzhen</city>
          <country>China</country>
        </postal>
        <email>dengshangling@huawei.com</email>
     </address>
    </author>
	
	<author fullname="Peng Liu" initials="P." surname="Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>32 Xuanwumen West Street, Xicheng District</street>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>liupengyjy@chinamobile.com</email>
     </address>
    </author>
	
    <date year="2022"/>

   <area>Transport Area</area>
    <workgroup>QUIC</workgroup>
   <keyword>quic,one-way delay</keyword>
   
   <abstract>
      <t>This document provides a solution for comparing one-way delays in multipath quic. In this solution, through message interaction between data receiver and data sender, the data sender can obtain delay rankings of multiple specified uniflows, providing reference for sending data packets.</t>
    </abstract>
  </front>
  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>
	  <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <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" format="default">RFC 2119</xref>.</t>
      </section>
	  
	  <section numbered="true" toc="default">	  
	    <name>Overview</name>
	    <t>QUIC basic specifications have been released successively. As an extension of QUIC, multipath QUIC is being formulated. Currently,two multipath QUIC suggestions (<xref target="DECONINCK-MP"/> and <xref target="QUIC-MP-LIU"/>) are submitted to QUIC group. This document is based on <xref target="DECONINCK-MP"/>.</t>
		
		<t><xref target="DECONINCK-MP"/> proposes a new design, that is, from a user perspective, the (multipath) QUIC is a collection of unidirectional flows (“all-uniflow”). Essentially, (multipath) QUIC consists of multiple client-to-server uniflows and server-to-client uniflows. When sending packets, endpoints perform data transmission scheduling independently. Referring to <xref target="DECONINCK-MP"/>, Figure 1 illustrates the architecture of a multipath QUIC connection.</t>
     
	 <figure anchor="deconicnk-mp-diagram">
	    <name slugifiedName="mp-diagram">An Example of Uniflow Distribution over a Multipath QUIC Connection</name>
        <artwork align="left" name="" type="" alt=""><![CDATA[
       +---------+                               +---------+               
       |  Client |                               |  Server |
       +---------+                               +---------+
        | |   | |                                 | |   | |   	   
        +-+   +-+                                 +-+   +-+        	   
         |     |                                   |     | 	   
         |     |                                   |     | 		   
         |     |------CID A - Uniflow ID 1-------->|     |
         |     |                                   |     | 
         |     |------CID B - Uniflow ID 0-------------->|     	
         |     |                                   |     | 	
         |     |<-----CID C - Uniflow ID 0---------|     |
         |     |                                   |     |		 
         |<-----------CID D - Uniflow ID 1---------|     |
         |     |                                   |     | 	
         |     |<-----CID E - Uniflow ID 2---------------| 	
         |     |                                   |     | 	
         |     |                                   |     | 	
         |     |                                   |     | 			 
           ]]></artwork>
      </figure>
		
	    <t>In single-path QUIC, RTT is valuable in adjusting packet sending window and congestion prevention and the algorithm of RTT measurement is depicted in the Figure 2.</t>
		
	 <figure anchor="single-path-rtt">
	    <name slugifiedName="rtt_measure">RTT measurement Algorithm used in Single-path QUIC</name>
        <artwork align="left" name="" type="" alt=""><![CDATA[
       +---------+                               +---------+               
       |  Client |                               |  Server |
       +---------+                               +---------+    	   
            |                                         |      	   
            |                                         |                                        	   
        T1  |-------------------Tx------------------->|-    
            |                                         |      
            |                                         | Delay    	
            |                                         |      	
        T2  |<------------------Ty--------------------|-    
            |                                         |     		 
            |       RTT(Tx+Ty)=(T2-T1-Delay)          |     
            |                                         |      	
            |                                         |     	

           ]]></artwork>
      </figure>
				
		<t>In multipath QUIC scenarios, data/control packets and corresponding ACKs are allowed to travel through different physical links to decouple service flows (streams) and links (connections). Packets (including ACKs) of the same stream may be transmitted through different connections. Therefore, minRTT, as the common path selection and scheduling algorithm for QUIC packets cannot be implemented effectively. So, measurement of the minimum one-way delay or calculation of the minimum delay of multiple uniflow in multipath QUIC protocol is important and required.</t>
	  
	  </section>
	   
    </section>
	
    <section numbered="true" toc="default">
      <name>One-way Delays Comparation in Multipath QUIC</name>
	  
	  <t>Figure 3 shows the algorithm presented in this document that is used by the data sender to determine the one-way delays of each uniflow or specified uniflows in a test period. </t>
	  	  
	  <figure anchor="one-way-delay-measure">
	    <name slugifiedName="one-way-delay">One-way Delays Comparation Algorithm</name>
        <artwork align="left" name="" type="" alt=""><![CDATA[
   +---------+                                  +---------+               
   |  Client |                                  |  Server |
   +---------+                                  +---------+
    | |   | |                                    | |   | |   	   
    +-+   +-+                                    +-+   +-+        	   
     |     |                                      |     | 	   
     |     |                                      |     | 		   
T1   |     |-------UNICONNECTION_DELAY_REQ------->|-    |-
     |     |       (CID A, uniflow 0, Tx1)        |     |
     |     |                                      |     |
     |     |                                      |D1   |		 
     |     |                                      |     |
     |     |                                      |     |D2	 
T2   |     |<------UNICONNECTION_DELAY_RESP-------|-    |
     |     |       (CID B, uniflow 0, Ty1)        |     |
     |     |                                      |     |		 
T3   |<-------UNICONNECTION_DELAY_RESP(uniflow 1)-------|-
     |     |       (CID c, uniflow 1, Ty2)        |     |
     |     |                                      |     | 	
     |     |                                      |     | 
     |     |-------UNICONNECTIONS_DELAY_RESULT--------->|
     |     |        (CID A, uniflow 1, Tx2)       |     |
     |     |                                      |     |
     |     |                                      |     |	 
     |     |                                      |     | 	 
     ]]></artwork>
      </figure> 
	  
	 <t>For example, the data sender is a server, and the data receiver is a mobile phone client. If the server wants to obtain the one-way delay information of each subflow, the server instructs the client to create a measurement task and the client records the start time. The client sends a delay test frame (UNICONNECTION_DELAY_REQ frame) to the server through a client-to-server subflow. After receiving the delay test frame (UNICONNECTION_DELAY_REQ frame) from the client, the server returns the delay measurement responses (UNICONNECTION_DELAY_RESP frame) on all candidate server-to-client subflows. The client records the arrival time of each delay measurement response (UNICONNECTION_DELAY_RESP frame). Then the client can calculate the delay rankings for these candidate server-to-client uniflows by the formulas below:</t>

	  <t>One-way Delay(uniflow 0): Ty1 = T2-T1-D1-Tx</t>
	  <t>One-way Delay(uniflow 1): Ty2 = T3-T1-D2-Tx</t>
	  <t>If Ty1 is greater than Ty2, uniflow 0's one-way delay is greater than that of uniflow 0. If Ty1 is less than Ty2, uniflow 0's one-way delay is less than that of uniflow 0.</t>  

      <t>Finally, the client sends the measurement result (UNICONNECTIONS_DELAY_RESULT frame) to the server as a reference to select a uniflow for data transmission in this test period.</t> 
	  
	</section>
		
	<section numbered="true" toc="default">
      <name>Protocol Extension Considerations</name>
	  <t>In this solution, three new frames are introduced to complete the interaction of the test between endpoints:</t>
	  <t>UNICONNECTION_DELAY_REQ Frame: triggering creation of a new measurement task sent from the data sender to the data receiver.</t>
      <t>UNICONNECTION_DELAY_RESP Frame: delay measurement response frame sent from the data receiver to the data sender.</t>
      <t>UNICONNECTIONS_DELAY_RESULT Frame: measurement result releasing frame sent from the data receiver to the data sender.</t> 	
	</section>
	
   <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>Request to IANA will be added later.</t>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Security issues will be considered later in the design.</t>
    </section>
  </middle>
  <!--  *****BACK MATTER ***** -->

 <back>
   <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
     <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">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
		
		<reference anchor="QUIC" target="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author initials="J" surname="Iyengar" fullname="Jana Iyengar">
              <organization/>
            </author>
            <author initials="M" surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
		  <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>		           
        </reference>

      </references>
      <references>
        <name>Informative References</name>

     <reference anchor="RFC2629" target="https://www.rfc-editor.org/info/rfc2629" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2629.xml">
          <front>
            <title>Writing I-Ds and RFCs using XML</title>
            <seriesInfo name="DOI" value="10.17487/RFC2629"/>
            <seriesInfo name="RFC" value="2629"/>
            <author initials="M." surname="Rose" fullname="M. Rose">
              <organization/>
            </author>
            <date year="1999" month="June"/>
            <abstract>
              <t>This memo presents a technique for using XML (Extensible Markup Language) as a source format for documents in the Internet-Drafts (I-Ds) and Request for Comments (RFC) series.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
        </reference>
		
	<reference anchor="DECONINCK-MP" target="https://datatracker.ietf.org/doc/draft-deconinck-quic-multipath/">
          <front>
           <title>Multipath Extensions for QUIC (MP-QUIC)</title>
           <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck">
              <organization>UCLouvain</organization>
           </author>
           <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
             <organization>UCLouvain</organization>
           </author>
           <date year="2021"/>
          </front>
    </reference>
	
	<reference anchor="QUIC-MP-LIU" target="https://datatracker.ietf.org/doc/draft-liu-multipath-quic/">
         <front>
          <title>Multipath Extension for QUIC</title>
          <author initials="Y." surname="Liu" fullname="Yanmei Liu">
             <organization>Alibaba Inc.</organization>
          </author>
          <author initials="Y." surname="Ma" fullname="Yunfei Ma">
             <organization>Alibaba Inc.</organization>
          </author>
          <author initials="C." surname="Huitema" fullname="Christian Huitema">
             <organization>Private Octopus Inc.</organization>
          </author>
          <author initials="Q." surname="An" fullname="Qing An">
             <organization>Alibaba Inc.</organization>
          </author>
          <author initials="Z." surname="Li" fullname="Zhenyu Li">
             <organization>ICT-CAS</organization>
          </author>
          <date />
         </front>
     </reference>
	
		
      </references>
    </references>
    <section anchor="app-additional" numbered="true" toc="default">
      <name>Additional Stuff</name>
      <t>This becomes an Appendix.</t>
    </section>
 </back>
</rfc>
