<?xml version="1.0" encoding="US-ASCII"?>
<!-- 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 RFC6824 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6824.xml">
<!ENTITY RFC3168 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3168.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="yes" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info" docName="draft-nagesh-mptcp-feature-negotiation-ps-00" ipr="trust200902">
  <!-- 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="MPTCP feature negotiation ps">Problem Statement of MPTCP Transmission Feature Negotiation</title>

	<author fullname="Nagesh Shamnur" initials="N." surname="Shamnur">
		<organization>Huawei</organization>
		<address>
			<postal>
				<street>Kundalahalli Village, Whitefield,</street>
				<city>Bangalore</city>
				<region>Karnataka</region>
				<code>560037</code>
				<country>India</country>
			</postal>
		<phone>+91-080-49160700</phone>
		<email>nagesh.shamnur@gmail.com</email>
		</address>
	</author>
	
	<author initials="Z" surname="Cao" fullname="Zhen Cao">
		<organization>Huawei</organization>
		<address>
			<postal>
				<street>Xinxi No.3</street>
				<city>Beijing</city>
				<code>100085</code>
				<country>China</country>
			</postal>
			<email>zhencao.ietf@gmail.com</email>
		</address>
	</author>

	<date year="2019" />

    <!-- 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>Transport</area>

    <workgroup>MPTCP</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>mptcp</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>This document describes the limitations associated with the current 
		MPTCP <xref target="RFC6824"/> and <xref target="I-D.ietf-mptcp-rfc6824bis"/> when it 
		comes to exchanging the capabilities and the policies that need to be 
		applied on each of the MPTCP connection endpoints. This document emphasis
		the need for such a mechanism and how the absence of such a mechanism
		severely limits the functionality of the MPTCP for varied deployment scenarios.
	    </t> -->
		
		<t>
		Path manager and packet scheduler are two important components of MPTCP protocol
		and associated implementations. Normally they are implemented and configured statically.
		This draft discusses the scenarios where statically configured path manager and packet scheduler
		are not sufficient, and presents the cases that deserve the negotiation of these multipath 
		transmission features which are currently not addressed by MTPCP.
		</t>
	</abstract>
  </front>

<middle>
	<section title="Introduction">
		<t>
			MPTCP <xref target="RFC6824"/>  <xref target="I-D.ietf-mptcp-rfc6824bis"/> specifies the procedure of establishing
			multiple subflows to a connection and it also explains the procedures
			for path management. There are various types of path manager that can
			be configured. The selection of a particular path manager algorithm is 
			however decided based on the deployment scenario and hence
			multiple options for the same are available. Each end of the MPTCP 
			connection needs to configure a path manager algorithm that would be 
			used for a particular connection in isolation and would thus wouldn't 
			know the path manager chosen on the remote side. In certain cases, a
			combination of different types of configuration would be required
			to suit a particular deployment scenario.
		</t>
			
		<t>
			This limitiation is also true in the case of the scheduler as well. Since for 
			every connection server based on its local policies selects a 
			particular scheduler and the client would select its own based on
			it's own local policies for data transmission to a remote endpoint.
			A particular scheduler type thus selected at the server would suit
			a connection to a particular client but the same might not be optimal
			in case of another client. This intelligence will have to be provisioned
			at the server using offline methods and server would not be updated in 
			time about any changes that happen on the client-side and so limits server
			from switching to the optimal scheduler to attain the best possible network
			bandwidth usage.
		</t>
			
		<t>
			MPTCP <xref target="RFC6824"/> does not standardises the rules for 
			selection of either of path manager or scheduler that needs to be 
			configured at each endpoint of the MPTCP connection and leaves it to 
			implementors` choice. Many factors influence the choice of path manager
			and scheduler method that needs to be applied on each side. Linux Kernel
			implements 4 different path managers - default, full-mesh, ndiffports and
			binder. It also implements 3 different schedulers - default (minRTT),
			round-robin and redundant. In reality, though not adopted by the current open source MPTCP,
			tens of schedulers are implemented, experimented and adapted by various
			people and institutions based on the deployment scenarios.
		</t>
		
		<t>
			This document explains the set of problem associated with the current
			MTPCP <xref target="RFC6824"/> with respect to rules for choosing and selecting
			the path manager and scheduler that needs to be configured and the problem it
			creates due to the absence of synchronisation mechanism which hinders the
			subflows from achieving the best results for path aggregation, optimal 
			bandwidth utilization and reap the benefits of switching to MPTCP from TCP.
			This document also discusses and emphasizes the needs for a procedure to
			exchange the capabilities during the connection establishment as well as
			during the lifetime of the connection.
		</t>
		
		<section title="Requirements Language and Terminology">
			<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>

			<t>This document also uses terminology described in <xref
				target="RFC6824"/>.
			</t>
		</section>
	</section>

	<section title="Rationale">
		<section anchor="current_mp_transmission_strategies" title="Current multipath transmission strategies">
			<t>Before establishing an MPTCP connection between the desiring peers,
			at each end of the connection endpoint, a choice of scheduler and 
			path manager needs to be made based on the deployment strategy and 
			the quality of the heterogeneous link(s) on which connection gets 
			established. Once selected, the same needs to be statically 
			provisioned and the connection establishment procedure follows.
			</t>
		
			<t>Both Scheduler and Path Manager are features which are not 
			standardized by IETF and is implementation-dependent. Various
			factors including deployment scenario influence the choice of
			scheduler/path manager that would be applied for every connection.
			One size fits all approach hence cannot be applied. Either
			of Client or Server can choose any of the publicly available standards
			implementation or can have its own implementation of a scheduler
			and path manager. At the same time, it can also expect the far endpoint
			of the connection to configure the scheduler and path manager to be
			configured in a certain way so as to achieve the desired result for
			both upstream and downstream data. MPTCP <xref target="RFC6824"/> doesn't
			explains how the schedulers/path managers are configured on each side
			of the connection and how it would be synchronized at the time of 
			connection setup.
			</t>

			<t>Absence of such a mechanism forces endpoints to negotiate them
			offline and also it would not be easy to change it in the deployed
			systems. This in turn inhibits MPTCP to deploy application
			and preference aware schedulers and path managers. Moreover, it 
			would not permit to change the schedulers and path managers that 
			are configured at each endpoint and synchronize them between
			client and servers, if the network conditions change.
			</t>
        </section>  

		<section title="Current practice to overcome this limitation">
            <t> Schedulers and Path Managers are statically provisioned at each
			end of the endpoint and in a specific way. Client and server 
			configure Schedulers/path managers in isolation and may or may not
			be synchronized with each other. For synchronization out of band, 
			method can be used which would not be discussed as a part of this 
			document. Path aggregation results might vary in each direction
			of the connection due to this difference in configuration between
			server and client.
			</t>
			<t> ECN <xref target="RFC3168"/>can help acheive the goal of scheduler to a fair extent by
			setting the CE mark.  However, this solution has some limitations per a brief discussion at IETF104 <xref target="minutes"/>.
			(it throttles the cwnd size when the flow really needs it) 
			</t>
		</section>

		<section anchor="current_method_problems" title="Problems with current method of tranmission strategies configuration"> 
			<t> Both server and client needs to negotiate the capabilities that will
				be configured on each side offline and cannot be discovered 
				dynamically	when the connection is initiated by the client. A wrong 
				configuration decision can have a substantial impact on protocol
				performance. A wrong decision may render the advantage of additional 
				paths useless or even reduce the overall performance by introducing
				issues like head-of-line blocking. Clients having proprietary 
				implementation cannot expect to have the desired result for both
				upstream and downstream data without setting the configuration on
				the far end of the connection. Also, it might not be viable to patch 
				or provision a new scheduler and/or path manager on server-side for
				every new client that connects to it might have already been deployed.
				A server cannot configure differentiated schedulers/path managers based
				on a different client that connects to it.
			</t>
		</section>
		<section title="Deployment scenario">
			<section title="Scheduler deployment scenario">
<!-- 				<t>Deployment scenario is such that Mobile Device acts as a client and the 
				server is hosted on the cloud. The client can reach the server using path WiFi
				only, LTE only or WiFi+LTE. The client has a proprietary scheduler implementation.
				The proprietary scheduler maintains 3 states as explained and switches between
				these states based on the network conditions. sub-flow path analysis is done
				and the client takes a call on the mode which it needs to consider for upstream
				data transmission. For downstream data transmission, the client pushes the path
				selection information to the server and server switches accordingly. This can
				be realized by setting the scheduler as redundant on the server-side and using
				the MP_PRIO option as defined in RFC6824 <xref target="RFC6824"/> section 2.5
				to control the path selection. So, with the presence of scheduler negotiation
				methodology at the time of MPTCP connection establishment will enable the client
				to request the server to set to the redundant scheduler for this connection and
				achieve the desired result.
				</t> -->
				
				<t> 
				In one typical deployment scenario, the mptcp is used between a smartphone and a cloud server. 
				There are two subflows in the connnection, one over the 802.11 path, and the other one via the cellular path.  
				The application running on top of mptcp would like to optimize its performance in terms of latency and throughput. 
				However, the smartphone user would like to use the toll-free 802.11 link as much as possible, and only overflow to cellular link when necessary. 
				For the upstream traffic, the smartphone can control the user expectation based on its own scheduler.  
				However the server does not know which path is preferred and which one is not, since the path characteristics have not been informed to the server. 
				In this sense, the mptcp scheduler on the server is not able to schedule the packet according to the service requirement. 
				</t>

				<t> <figure align="center" anchor="sched_deploy_scenario" title="Scheduler Deployment
                    scenario"> <artwork align="center"><![CDATA[
                       (((......)))
                    (((            )))
                (((                  )))
             (((                       )))
            (((          Cloud          )))
            (((        Platform         )))
              (((                     )))
                (((                 )))
                    (((            )))
                      (((......)))
                       ^  |v |
         > > > > > > > >  |v |
        ^                 |v |
        ^  +--------------+v +--------------+
        ^  |               v                |
        ^  |  < < < < < < <                 |
        ^  |  v                             |
        ^  |  v                             |
        ^  |  v                             |
      +---------+                      +---------+
      |  802.11 |                      |   LTE   |
      +---------+                      +---------+
                        ]]></artwork> </figure>
				</t>
			
			</section>
			<section title="Path Manager deployment scenario">
				<!-- <t>Deployment scenario is such that Mobile Device acts as a client and the  -->
				<!-- server is hosted on the cloud. The client has 2 paths to the server: WiFi -->
				<!-- and LTE. The client has a proprietary path manager implementation which ensures -->
				<!-- only direct path are connected (WiFi IP on the client-side to WiFi IP on the  -->
				<!-- server-side and vice versa). It ensures the creation of sub-flow on the cross path since -->
				<!-- cross paths are deemed to be less efficient in terms of bandwidth availability -->
				<!-- and other reasons such as cost if both WiFi and LTE are provided by different operators. -->
				<!-- This scheme can be realized by setting the path manager on the client-side to  -->
				<!-- proprietary on client-side and default mode on the server-side, so that only the -->
				<!-- client initiates the sub-flow creation and avoids creating cross-path sub-flows -->
				<!-- to server. Presence of the negotiation mechanism as discussed will help in negotiating -->
				<!-- the path managers among the server and the client. -->
				<!-- </t> -->
				
				<t>
				A bit different to the previous scenario, the smartphone is connected to the server over a mptcp connection via a 802.11 path and a cellular link. 
				However the server also has two IP addresses from two ISPs. 
				Ideally, the client path manager needs to avoid the creation of sub-flow on the cross path since
				cross paths are deemed to be less efficient in terms of bandwidth availability and latency. 
				This scheme needs to be realized by setting the path manager on the client-side to 
				proprietary and default mode on the server-side, so that only the
				client initiates the sub-flow creation and avoids creating cross-path sub-flows
				to server.  This, however, can only be cooridinated manually in the current mptcp design. 
				</t>
				
				<t> Most recently, the mptcp upstream project has put the user space path manager into the roadmap <xref target="mptcpd"/>, which is quite align with the scenario we have described. 
				This will bring the path-manager negotiation goal closer to reality.  
				</t>

				<t> <figure align="center" anchor="pm_deploy_scenario" title="Path Manager Deployment
                    scenario"> <artwork align="center"><![CDATA[
          +-----------+                                 +-----------+
          |           |+------+                 +------+|           |
          |           ||802.11| - - - - - - - - |802.11||           |
          |           |+------+   \          /  +------+|           |
          |           |              \    /             |           |
          |   Client  |                x                |  Server   |
          |           |             /     \             |           |
          |           |+------+  /            \ +------+|           |
          |           || LTE  | - - - - - - - - |  LTE ||           |
          |           |+------+                 +------+|           |
          +-----------+                                 +-----------+
                      ]]></artwork> </figure>
				</t>
			</section>
		</section>
	</section>

	<section title="Requirements for multipath transmission negotiation strategies">
		<section title="Req#1: Flexiblity at each endpoint to implement propreitary algorithms">
			<t>Each endpoint of the connection should be equipped to implement
				proprietary implementation of scheduler and path manager. The same 
				also should be allowed to be commissioned dynamically and can be 
				synchronized with the peer endpoint on a per-connection basis.
				This would increase the flexibility to deploy MPTCP under various
				heterogeneous network conditions without the need to recompile the
				kernel/implementation. 
			</t>
		</section>
		
		<section title="Req#2: Flexiblity to be configured based on deployment network">
			<t>As mentioned in the earlier section 
				<xref target="current_mp_transmission_strategies"/> there is no 
				universal method which satisfies all the various heterogeneous
				networks in which MPTCP gets deployed and so different network 
				scenario demands different implementation for scheduler and 
				path manager. At the server, a system need to support commissioning 
				of different methods for schedulers and path managers based on the
				client which connects to it.
			</t>
		</section>

        <section title="Req#3: Flexiblity to be configured based on application used">
            <t>Multipath TCP scheduling and path manager is configured in 
			isolation and application bear no impact on the choice of scheduler
			and path manager that gets configured in the MPTCP layer. Different
			applications will demand different selection of these capabilities and
			thus the monolithic configuration of the same severely restricts the 
			advantages of deploying MPTCP. Application-aware selection of these
			methods would thus push MPTCP beyond throughput optimization and
			thus can be deployed in a wide range of applications.
			</t>
		</section>
	</section>

	<section anchor="IANA_Considerations" title="IANA Considerations">
		<t>This specification contains no IANA considerations.</t>
	</section>

	<section anchor="Security" title="Security Considerations">
		<t>
			TBD.
		</t>
	</section>
	
<!-- 	<section anchor="Acknowledgements" title="Acknowledgements">
		<t> 
			We would like to thank 
			for their review and comments.
		</t>
	</section> -->

	<!-- Possibly a 'Contributors' section ... -->
	
</middle>

<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">
		<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
		&RFC2119;
		&RFC6824;
		&RFC3168;
	<?rfc include="reference.I-D.ietf-mptcp-rfc6824bis.xml"?>		
	
		<reference anchor="mptcpd">
        <front>
          <title>The Multipath TCP Daemon, https://github.com/intel/mptcpd/</title>
          <author fullname="mptcpd" surname="mptcpd">
            <organization/>
          </author>
		  <date month="August" year="2019"/>
        </front>
      </reference>
      
      <reference anchor="minutes">
        <front>
          <title> https://tools.ietf.org/wg/mptcp/minutes?item=minutes-104-mptcp-00.html </title>
          <author fullname="ietf 104" surname="mptcp session">
            <organization/>
          </author>
		  <date month="August" year="2019"/>
        </front>
      </reference>

	</references>
</back>
</rfc>