Re: [multipathtcp] A question related to MPTCP control overhead

Sayee Kompalli Chakravartula <> Tue, 11 April 2017 13:34 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id AFE81129BBF for <>; Tue, 11 Apr 2017 06:34:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.221
X-Spam-Status: No, score=-4.221 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id g-LMh_NKfvVX for <>; Tue, 11 Apr 2017 06:34:01 -0700 (PDT)
Received: from ( []) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 8B9B6129BA5 for <>; Tue, 11 Apr 2017 06:34:00 -0700 (PDT)
Received: from (EHLO ([]) by (MOS 4.3.7-GA FastPath queued) with ESMTP id DKR84269; Tue, 11 Apr 2017 13:33:58 +0000 (GMT)
Received: from ( by ( with Microsoft SMTP Server (TLS) id 14.3.301.0; Tue, 11 Apr 2017 14:33:57 +0100
Received: from ([]) by ([::1]) with mapi id 14.03.0301.000; Tue, 11 Apr 2017 19:03:51 +0530
From: Sayee Kompalli Chakravartula <>
To: "" <>, "" <>
Thread-Topic: [multipathtcp] A question related to MPTCP control overhead
Thread-Index: AdKux4amd3XFz/fSRoiWehKw99KRVgAruciAAHFvuLAAGcM3gABJPHoQ
Date: Tue, 11 Apr 2017 13:33:51 +0000
Message-ID: <5C068B455EB58047BBD492DA2B0829FA3763D266@blreml501-mbs>
References: <5C068B455EB58047BBD492DA2B0829FA3763ADD5@blreml501-mbs> <> <5C068B455EB58047BBD492DA2B0829FA3763CB68@blreml501-mbs> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020202.58ECDB46.02A5, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32
X-Mirapoint-Loop-Id: 36dc4be7c02fd16e8af772bc154acd9d
Archived-At: <>
Subject: Re: [multipathtcp] A question related to MPTCP control overhead
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Multi-path extensions for TCP <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 11 Apr 2017 13:34:05 -0000

Dear Olivier,
I read through the paper "Are TCP Extensions Middlebox-prrof?", and especially focused on the Section 3.3 on Multipath TCP and midleboxes. My comments are as follows:

1. Regarding middleboxes removing options from non-SYN segments:
Currently, MPTCP handles this issue by attaching MPTCP option to every segment in the first window worth of data. An appropriate behaviour is defined for the sender and receiver to fallback to TCP in case middlebox removes the MPTCP option.

In my proposal I say that, instead of appending MPTCP option to segments in the first window worth of data, we defer appending the MPTCP option to segments to a later time just before we establish the second flow and as described below.

We will define an additional state variable DSS_RCV at both the sender and the receiver. At the beginning, this state variable will be initialized to false at both the ends. Now assume that the state variable NUM_SUBFLOW = 1 and DSS_RCV = false at the sender side and that the sender has send the DSS option for the first time. When DSS option is received with its state variable NUM_SUBFLOW = 1 and DSS_RCVD = false, the receiver will understand that the sender has decided to utilize the DSS option, and so it will update its state variable DSS_RCV = true and will ACK the segment that carried the DSS option with its own DSS option. When the sender receives ACK containing DSS option it will update its state variable DSS_RCV = true. Assuming that middlebox removes the DSS option included by the sender, the receiver will acknowledge the segment without DSS option. Because the ACK segment does carry DSS option the sender will fall back.

2. To cope with sequence number randomizers:
The same approach works with my proposal too, but with one little observation. Whenever the state variable NUM_SUBFLOW transitions from two to one, all the DSS related information is discarded, i.e., the space of DSNs and the mapping are removed from the protocol control block. But, when the state variable NUM_SUBFLOW again transitions from one to two, the space of DSNs will be created to establish mapping between SSS and DSS with one little difference: unlike when the MPTCP connection is established, for the subflow 1 we will not map the first DSN to subflow sequence zero but to the running subflow SN at that time. 

3. Regarding middlebox performing segment splitting or coalescing:
This behaviour of middlebox poses as much risk to my way of doing things as it does to the existing MPTCP specification. Because the existing mitigation does not depend on whether we continue to support DSNs on MPTCP connection consisting of just one subflow, the same solution will continue to work whether or not we support DSS for MPTCP connection consisting of just one subflow.

4. ALG modifying the data stream by adding or removing bytes from the payload:
This issue is relevant when a MPTCP option is included in a segment, and the same protocol behaviour will work in my case too.

I haven't prepared a detailed write-up to share with IETF folks, which I will do once I am fairly confident that I have worked out all corner cases.


-----Original Message-----
From: Olivier Bonaventure [] 
Sent: Monday, April 10, 2017 4:06 PM
To: Sayee Kompalli Chakravartula;
Subject: Re: [multipathtcp] A question related to MPTCP control overhead


> Thanks for the response. While preparing reply to your observation, I came across your 2013 Sigcomm paper "Are TCP Extensions Middlebox-proof?", and I believe that I should read that paper before I reply you.
> I thought of a rough sketch of solution without regard to what middleboxes can do, which essentially assumes a state-machine at both ends. Before I embark on designing a solution, if at all feasible, I wanted to know how others think of such an issue. Hope to reply you soon.

My fear is that any solution would introduce a significant change to Multipath TCP. We have evidence from the widespread utilisation of Multipath TCP by Apple for Siri that the current design (DSS in all segments, including initial subflow) works well in today's Internet. 
Changing this part for rfc6824bis looks very risky to me.