Re: [Int-area] Middleboxes to aid the deployment of MPTCP

Joe Touch <touch@isi.edu> Thu, 20 July 2017 14:52 UTC

Return-Path: <touch@isi.edu>
X-Original-To: int-area@ietfa.amsl.com
Delivered-To: int-area@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9C25E131A7A; Thu, 20 Jul 2017 07:52:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.9
X-Spam-Level:
X-Spam-Status: No, score=-6.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EUOYEVtvJKvn; Thu, 20 Jul 2017 07:52:23 -0700 (PDT)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 148EF131CFA; Thu, 20 Jul 2017 07:52:23 -0700 (PDT)
Received: from [192.168.1.189] (cpe-172-250-240-132.socal.res.rr.com [172.250.240.132]) (authenticated bits=0) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id v6KEpcuc024893 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Thu, 20 Jul 2017 07:51:48 -0700 (PDT)
To: Olivier Bonaventure <olivier.bonaventure@tessares.net>, Internet Area <int-area@ietf.org>, tsv-area@ietf.org
References: <fe384d2b-a0ba-9444-2ee9-cd0de6d24b7c@tessares.net> <61608b70-6861-e7f8-96de-5679718a9680@isi.edu> <0174561d-9baf-13e7-06a4-a8f843c3621f@tessares.net> <608a81e9-f61c-b0b2-646f-777e5f5937c9@isi.edu> <6a116785-51d2-6270-fb1f-10f9a2e64c31@tessares.net> <6977c9a1-19b8-0bf5-4396-3cc3d8385b57@isi.edu> <bab6cb75-946f-cb4b-e4e6-32f49a7ea8ae@tessares.net> <7b76a8de-d07e-a51d-28fc-f6d3e70b9f1c@isi.edu> <b6543473-fc83-d78a-31a4-7faee67b0c7d@tessares.net> <2ee957ad-757b-c457-f6ff-894a3d995149@isi.edu> <3bf7fffa-c267-5d67-c124-01fa52ebafdc@tessares.net>
From: Joe Touch <touch@isi.edu>
Message-ID: <63ad0458-0eed-e843-fec8-aadcedcc3e74@isi.edu>
Date: Thu, 20 Jul 2017 07:51:36 -0700
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
MIME-Version: 1.0
In-Reply-To: <3bf7fffa-c267-5d67-c124-01fa52ebafdc@tessares.net>
Content-Type: multipart/alternative; boundary="------------1BBCBFC63D2B35D9D0089E4D"
Content-Language: en-US
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Archived-At: <https://mailarchive.ietf.org/arch/msg/int-area/zMZiqLQx3XZC4nyV6fUV0ntHIWA>
Subject: Re: [Int-area] Middleboxes to aid the deployment of MPTCP
X-BeenThere: int-area@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: IETF Internet Area Mailing List <int-area.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/int-area>, <mailto:int-area-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/int-area/>
List-Post: <mailto:int-area@ietf.org>
List-Help: <mailto:int-area-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/int-area>, <mailto:int-area-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 20 Jul 2017 14:52:25 -0000

On 7/19/2017 11:19 PM, Olivier Bonaventure wrote:
>> How do you know you're using the converter? Is the initial connection to
>> that converter? Or does the converter hijack (the latter is the
>> implication of the text, AFAICT).
>
> Consider a simple implementation using LD_PRELOAD to overload the
> connect system call on Linux. When the application issues connect, it
> has already set the required socket options that apply for this new
> connection. The converter implementation uses the destination address
> of the connect system call to create the TLV message and sets the TFO
> socket option to send it during its own connect with the converter. If
> the application had requested TFO, then the converter library simply
> uses the regular connect call and everything is fine. 
The Linux API is not the TCP API. The TCP API is a generic,
implementation-independent interface to upper layer protocols and
applications.

This mechanism needs to be described in terms of the TCP API.

Yes, the app can SEND data to the socketpair before the connection is
established, per RFC793 (note - I'm using 793 terms, not unix terms
here). There's nothing in RFC7413 (TFO) that confirms that TFO will
succeed on a new connection and that RFC explicitly admits it did not
introduce an API extension by which an application can read (RECEIVE)
SYN data before the connection is established:

   But the client's socket may have data available to read before it's
   connected.  This document does not cover the corresponding API
   change.

I.e., it's important to explain what you're doing using the TCP API, not
the features of an implementation (the latter can be helpful as an
example, e.g., in an appendix, though).

Joe