Re: [multipathtcp] Multipath TCP Address advertisement 1/5 - Load Balancing

Olivier Bonaventure <> Thu, 18 August 2016 08:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5036112B018 for <>; Thu, 18 Aug 2016 01:18:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.301
X-Spam-Status: No, score=-4.301 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Ln_v2t34G7_k for <>; Thu, 18 Aug 2016 01:18:27 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id DEDCB127077 for <>; Thu, 18 Aug 2016 01:18:26 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: by (Postfix) with ESMTPSA id A674A67DAA1; Thu, 18 Aug 2016 10:18:18 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.9.2 A674A67DAA1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;; s=selucl; t=1471508298; bh=M4Qo4AZF1PYbJhNfovprIsVs6APOX3kkLbA3RSUiLGY=; h=Reply-To:Subject:References:To:Cc:From:Date:In-Reply-To; b=QFNS9uL8QAr2rFQ3BwQLj+aOW/4i5WqKVdt3MZb5vXCE4ijdlLIRExdJHnEKPbvp5 ITE0DUav25CjbSdXJ6VkfAyOlW9Mi1AFU9vm/uzgKBkwl077BANOpQpq2OZLTHmHcV /IrYyDBcmB2TQbIUf5fR47OcRNum66WJGjLA724o=
X-Virus-Status: Clean
X-Virus-Scanned: clamav-milter 0.99 at smtp-5
References: <> <>
To: Yoshifumi Nishida <>, =?UTF-8?Q?Fabien_Duch=c3=aane?= <>
From: Olivier Bonaventure <>
Message-ID: <>
Date: Thu, 18 Aug 2016 10:18:19 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.2.0
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit
X-Sgsi-Spamcheck: SASL authenticated,
X-SGSI-MailScanner-ID: A674A67DAA1.A5BDB
X-SGSI-MailScanner: Found to be clean
X-SGSI-Spam-Status: No
Archived-At: <>
Cc: "" <>
Subject: Re: [multipathtcp] Multipath TCP Address advertisement 1/5 - Load Balancing
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Multi-path extensions for TCP <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 18 Aug 2016 08:18:29 -0000


>     There are two use cases for this flag :
>     - servers behind a load balancer can use this flag in the SYN+ACK to
>     indicate that the IP address of the load balancer should not be used to
>     establish subflows. Those servers will typically announce one or more
>     other addresses with the ADD_ADDR option.
>     - clients behind firewalls or NAT can use this flag in the SYN. If set
>     in the SYN, the flag MUST also be set in the third ACK to support
>     stateless servers.
> I basically agree with "don't try to establish subflows with this" feature.
> But, I am wondering if we can use MP_PRIO for this. (I also think it's
> fine to use MP_CAPABLE as well if needed)

I think MP_CAPABLE is required for the addresses of the initial subflow. 
You cannot wait for an additional message (MP_PRIO or whatever) to 
determine whether you can use this address or not for subsequence 
subflows. This would delay the establishment of subflows.

> If we use this feature in MP_CAPBLE, we can only use this feature in the
> first subflow.
> If we use MP_PRIO, we can apply this feature to any subflows.
> In addition, if the node want to change the status for some reasons, it
> can send another MP_PRIO to update it.

If you used the bit in the MP_CAPABLE option to indicate that the 
address of the initial subflow should not be used and you later change 
your mind, you can simply send an ADD_ADDR option that advertises the 
same address as the initial subflow.

But this raises another question concerning the utilisation of addresses 
to create subflows. Consider two dual-homed hosts.

C ----- S

C has two addresses, C1 and C2. S also has addresses S1 and S2. C does 
not accept subflows on C1 and C2.

The initial subflow is C1->S1. Neither C1 nor S1 should be used to 
establish subflows. S advertises S2 through an ADD_ADDR option.

At this point, C creates a new subflow C2->S2. S learns that address C2 
is also available. What should S do with the address C2 that it has 
learned ? Can this address be used to establish additional subflows ?
Should we add the same bit in the MP_JOIN option as in the MP_CAPABLE 
option to indicate that C2 should not be used to create subflows or 
should we simply say that only addresses advertised with ADD_ADDR can be 
used to create subflows ?