[multipathtcp] 6824bis -11 review

Rahul Arvind Jadhav <rahul.jadhav@huawei.com> Sat, 28 July 2018 07:38 UTC

Return-Path: <rahul.jadhav@huawei.com>
X-Original-To: multipathtcp@ietfa.amsl.com
Delivered-To: multipathtcp@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id F2D1E130DDC for <multipathtcp@ietfa.amsl.com>; Sat, 28 Jul 2018 00:38:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id O2_8b8bXEMRj for <multipathtcp@ietfa.amsl.com>; Sat, 28 Jul 2018 00:38:14 -0700 (PDT)
Received: from huawei.com (lhrrgout.huawei.com []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B454B120049 for <multipathtcp@ietf.org>; Sat, 28 Jul 2018 00:38:14 -0700 (PDT)
Received: from lhreml701-cah.china.huawei.com (unknown []) by Forcepoint Email with ESMTP id 12A02F704DBC5 for <multipathtcp@ietf.org>; Sat, 28 Jul 2018 08:38:09 +0100 (IST)
Received: from BLREML407-HUB.china.huawei.com ( by lhreml701-cah.china.huawei.com ( with Microsoft SMTP Server (TLS) id 14.3.399.0; Sat, 28 Jul 2018 08:38:10 +0100
Received: from BLREML503-MBX.china.huawei.com ([]) by BLREML407-HUB.china.huawei.com ([]) with mapi id 14.03.0382.000; Sat, 28 Jul 2018 13:08:01 +0530
From: Rahul Arvind Jadhav <rahul.jadhav@huawei.com>
To: "multipathtcp@ietf.org" <multipathtcp@ietf.org>
Thread-Topic: 6824bis -11 review
Thread-Index: AdQmJDYhfu15UAaeTxKUY+EC058bGg==
Date: Sat, 28 Jul 2018 07:38:00 +0000
Message-ID: <982B626E107E334DBE601D979F31785C5DC5A15C@BLREML503-MBX.china.huawei.com>
Accept-Language: en-IN, zh-CN, 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
Archived-At: <https://mailarchive.ietf.org/arch/msg/multipathtcp/-6W5_rgx3NyYsIwB4vcd0dtlRv8>
Subject: [multipathtcp] 6824bis -11 review
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.27
Precedence: list
List-Id: Multi-path extensions for TCP <multipathtcp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/multipathtcp/>
List-Post: <mailto:multipathtcp@ietf.org>
List-Help: <mailto:multipathtcp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 28 Jul 2018 07:38:17 -0000


As promised  in IETF102, here is my review for 6824bis-11. As Phil had suggested, I didn't take the trouble to check if my comments overlap with any of the previous discussions/comments. 

1. Section 3.6: Subflow Reset
[RJ]: Is MP_TCPRST a SHOULD or MUST to be included along with the TCP_RST ? Can this be stated explicitly in section 3.6?

2. Section 3.4.2. Remove Address
   "The sending and receipt (if no keepalive response was received) of
   this message SHOULD trigger the sending of RSTs by both hosts on the
   affected subflow(s) "
[RJ]: Since a MP_TCPRST should be associated with this RST, what should be the corresponding Reason Code that can be used in MP_TCPRST for this case? I checked existing reason codes in section 3.6 and none of those made sense (may be except for 0x0 ?).

3. Section 3.4.1. Address Advertisement 
   "A host can send an ADD_ADDR message with an already assigned Address
   ID, but the Address MUST be the same as previously assigned to this
   Address ID, and the Port MUST be different from one already in use
   for this Address ID."
[RJ]: Didn't understand the rationale for allowing reuse of Address ID only for port change and not for IP change.

4. Section 3.4.1. Address Advertisement
[RJ]: For long-lived MPTCP connection, the ADD_ADDR needs to be resent if the sub-flow is closed and if it needs to be reopened in the future. Is this correct? The reason for me to believe this is, if REMOVE_ADDR is sent and if the sub-flow is active/functioning, then the REMOVE_ADDR will be ignored. This means that when the sub-flow is closed, the corresponding Address ID is removed. Thus it means to establish a new sub-flow from the peer an ADD_ADDR has to be sent.

5. passive opener
[RJ]: The term "passive opener" is used several times in the document. This term needs to be clarified in Terminology section.

6. Section 3 Figure 3
[RJ]: Length field in figure 3 encompasses Kind, Length and Option payload. This should be explicitly stated.

7. Section 3.1 says: "it is expected that A will have generated a key locally before the initial SYN" 
[RJ]: Is there any advantage of generating the key in advance? The key generation can be avoided by A if node B responds without MP_CAPABLE. Can this be left to the implementation?

8. Section 3.2 says: The MP_JOIN option includes an "Address ID".  This is an identifier that only has significance within a single connection,
[RJ]: The significance of "Address ID" is only within the connection and __only on the peer__ who generates the ID. Is this correct? 

9. Section 3.3 says: M = Data Sequence Number (DSN), Subflow Sequence Number (SSN), Data-Level Length, and Checksum present
[RJ]: and Checksum present (if negotiated)

10. [RJ]: Can an attacker spoof MP_FAIL option to the receiver with DSN=0 (infinite mapping)? This will cause the receiver to discard all the data following DSN and the failed data won't be DATA_ACKed. Is there any way to protect this?

11. [RJ]: I was hoping to find a section in the introduction which summarizes changes in v1. This could be of help for someone who aims to migrate/understand briefly the implications of switching to v1. 

Section 2.7:
Currently: "To meet the threats identified in ..."
Should be: "To address the threats identified in ..."

Section 2.7:
Currently: "keys are sent in the clear in the MP_CAPABLE messages"
Should be: "keys are sent in clear in the MP_CAPABLE messages"

Section 3.1:
Spellfix: requsted -> requested
Spellfix: wishs -> wishes

Section 3.1:
Currently: "The key MUST be hard to guess, and it MUST be unique for the sending host at any one time."
Should be: "The key MUST be hard to guess, and it MUST be unique for the sending host across all MPTCP connections."

Section 3.1:
Currently: "there is not a collision"
Should be: "there is no collision"

Section 3.1:
Currently: "The receiver will acknowledge this data a the connection"
Should be: "The receiver will acknowledge this data at the connection"

Section 3.4.1:
Spellfix: assinged -> assigned

Section 3.6:
Currently: "Regular TCP RST options remain used to at the subflow-level"
Should be: "Regular TCP RST options continue to be used at the subflow-level"

Section 3.6:
Spellfix: re-estbalish -> re-establish
Spellfix: ressources -> resources

Section 3.6:
Currently: "It would be beneficial for a host to the reasons ..."
Should be: "It would be beneficial for a host to provide the reasons ..."