Re: [tcpm] Updated version of draft-ietf-tcpm-converters-05

<mohamed.boucadair@orange.com> Tue, 26 February 2019 06:43 UTC

Return-Path: <mohamed.boucadair@orange.com>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6F166130E78 for <tcpm@ietfa.amsl.com>; Mon, 25 Feb 2019 22:43:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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 D1oITHzlChYN for <tcpm@ietfa.amsl.com>; Mon, 25 Feb 2019 22:43:00 -0800 (PST)
Received: from orange.com (mta241.mail.business.static.orange.com [80.12.66.41]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 74C9A130E77 for <tcpm@ietf.org>; Mon, 25 Feb 2019 22:42:59 -0800 (PST)
Received: from opfedar06.francetelecom.fr (unknown [xx.xx.xx.8]) by opfedar24.francetelecom.fr (ESMTP service) with ESMTP id 447q4x3S0Yz5wQ8; Tue, 26 Feb 2019 07:42:57 +0100 (CET)
Received: from Exchangemail-eme6.itn.ftgroup (unknown [xx.xx.13.79]) by opfedar06.francetelecom.fr (ESMTP service) with ESMTP id 447q4x2bVbz3wbK; Tue, 26 Feb 2019 07:42:57 +0100 (CET)
Received: from OPEXCAUBMA2.corporate.adroot.infra.ftgroup ([fe80::e878:bd0:c89e:5b42]) by OPEXCAUBM6E.corporate.adroot.infra.ftgroup ([fe80::d89a:9017:59c2:9724%21]) with mapi id 14.03.0435.000; Tue, 26 Feb 2019 07:42:57 +0100
From: mohamed.boucadair@orange.com
To: Yoshifumi Nishida <nishida@sfc.wide.ad.jp>
CC: "tcpm@ietf.org" <tcpm@ietf.org>
Thread-Topic: [tcpm] Updated version of draft-ietf-tcpm-converters-05
Thread-Index: AQHUzTj2jAz55tREj0GBQ4GiGIah/6Xxmg7A
Date: Tue, 26 Feb 2019 06:42:57 +0000
Message-ID: <787AE7BB302AE849A7480A190F8B93302EA25443@OPEXCAUBMA2.corporate.adroot.infra.ftgroup>
References: <9DD59801-36CE-407E-98F0-0BB1AAD514A7@tessares.net> <CAO249yc-eHAnOR7XfemQyJB+UVjmdtt43oZs+xJa=inZBBgp2w@mail.gmail.com> <787AE7BB302AE849A7480A190F8B93302EA2273F@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <CAO249ycs3grfmcaVJem-swoAWMAU_boOc5csY-ZjWn5S8m0F5w@mail.gmail.com> <787AE7BB302AE849A7480A190F8B93302EA23CC3@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <787AE7BB302AE849A7480A190F8B93302EA24AC5@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <CAO249yeALw7PJnKxkLVMr2q4-qeB_-fMwc7HW+3f-mX-s+RQag@mail.gmail.com>
In-Reply-To: <CAO249yeALw7PJnKxkLVMr2q4-qeB_-fMwc7HW+3f-mX-s+RQag@mail.gmail.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.114.13.247]
Content-Type: multipart/alternative; boundary="_000_787AE7BB302AE849A7480A190F8B93302EA25443OPEXCAUBMA2corp_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/hmAW0cs6cz_-i6vCU30ZaI-BBMc>
Subject: Re: [tcpm] Updated version of draft-ietf-tcpm-converters-05
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 26 Feb 2019 06:43:03 -0000

Hi Yoshi,

Please see inline.

Cheers,
Med

De : Yoshifumi Nishida [mailto:nishida@sfc.wide.ad.jp]
Envoyé : lundi 25 février 2019 19:35
À : BOUCADAIR Mohamed TGI/OLN
Cc : Yoshifumi Nishida; tcpm@ietf.org
Objet : Re: [tcpm] Updated version of draft-ietf-tcpm-converters-05

Hi Med,

Thanks for the updates. I have one question.
When the converter does mptcp conversion and the client wants to use TLS for the connection, how TLS is used?

[Med] TLS is managed e2e between the client and the server. The converter can only read/strip data that is supplied by the client for the conversion service. Unlike data exchanged between the client and the server, the data used for conversion purposes is supplied in clear between the client and the converter.

From a functional standpoint, the establishment of TLS between the client and the server is similar to the establishment of such session when a NAT/NAT6 is on-path.

Does this means TLS will be used only between the converter and the server, but not used between the client and the converter?
[Med] No. TLS is managed directly between the client and the converter. The scope is as follows:

In scope:

C------Converter-----S
<====================>
         TLS

Out of scope:

(a)

C------Converter-----S
<========><==========>
   TLS        TLS

(b)

C------Converter-----S
/====================\
|<=======>           |
|   TLS              |
\====================/
         TLS


Other parts look good to me.

[Med] Great. These updates will be included in -06.

--
Yoshi

On Sun, Feb 24, 2019 at 11:30 PM <mohamed.boucadair@orange.com<mailto:mohamed.boucadair@orange.com>> wrote:
Hi Yoshi,

I suggest to make the following modifications to the draft to clarify the scope as you suggested:
https://github.com/obonaventure/draft-tcp-converters/pull/55/files

Please let us know if these changes solve your concern ?

Thank you.

Cheers,
Med

De : tcpm [mailto:tcpm-bounces@ietf.org<mailto:tcpm-bounces@ietf.org>] De la part de mohamed.boucadair@orange.com<mailto:mohamed.boucadair@orange.com>
Envoyé : vendredi 22 février 2019 10:11
À : Yoshifumi Nishida
Cc : tcpm@ietf.org<mailto:tcpm@ietf.org>
Objet : Re: [tcpm] Updated version of draft-ietf-tcpm-converters-05

Hi Yoshi,

Please see inline.

Cheers,
Med

De : Yoshifumi Nishida [mailto:nishida@sfc.wide.ad.jp<mailto:nishida@sfc.wide.ad.jp>]
Envoyé : vendredi 22 février 2019 08:12
À : BOUCADAIR Mohamed TGI/OLN
Cc : Yoshifumi Nishida; Olivier Bonaventure; tcpm@ietf.org<mailto:tcpm@ietf.org>
Objet : Re: [tcpm] Updated version of draft-ietf-tcpm-converters-05

Hi Med,

I put my comments in lines.

On Wed, Feb 20, 2019 at 6:43 AM <mohamed.boucadair@orange.com<mailto:mohamed.boucadair@orange.com>> wrote:
Hi Yoshi,

Please see inline.

Cheers,
Med

De : tcpm [mailto:tcpm-bounces@ietf.org<mailto:tcpm-bounces@ietf.org>] De la part de Yoshifumi Nishida
Envoyé : mardi 19 février 2019 09:31
À : Olivier Bonaventure
Cc : tcpm@ietf.org<mailto:tcpm@ietf.org>
Objet : Re: [tcpm] Updated version of draft-ietf-tcpm-converters-05

Hi Olivier,

Thanks for the updates. I personally think there are several points to be clarified in the draft.

1: It seems that there are two modes in the converter architecture. One is clients use server's addresses for destination and the other is clients use converter's addresses for destination.


[Med] For connections that are eligible to the conversion service, the destination address is ALWAYS set to the one the converter. For other connections which BYPASS the converter, the client contacts the server directly. Which connections are eligible to the conversion service is policy-based. This is covered by this text:



   This document does not assume that all the traffic is eligible to the

   network-assisted conversion service.  Only a subset of the traffic

   will be forwarded to a Transport Converter according to a set of

   policies.  These policies, and how they are communicated to

   endpoints, are out of scope.  Furthermore, it is possible to bypass

   the Transport Converter to connect directly to the servers that

   already support the required TCP extension(s).

What I meant was the following sentence in the draft. Is this ok?


   "When establishing a connection, the Client can, depending on local

   policies, either contact the Server directly (e.g., by sending a TCP

   SYN towards the Server) or create the connection via a Transport

   Converter. "



[Med] This text is to decide if a connection has to go via the converter.

   But, clients need to use convert protocol to utilize converters. there won't be a transparent proxy like converter.
   When I think in this way, I am wondering what's the advantages for clients to use server's address for their destinations.

[Med] I’m not sure which case you are referring to. In order to use the conversion service, packets MUST be sent directly to the converter. This is clearly covered by this text, for example:

If clients always send SYNs to converters and don't directly send them to servers as you mentioned, I have nothing to add.
Because I personally don't see a good reason to support it in this proposal.

[Med] Great. This comment is then fixed.

====

   The Transport Converter adheres to the main principles drawn in

   [RFC1919<https://tools.ietf.org/html/rfc1919>].  In particular, a Transport Converter achieves the

   following:



   o  Listen for client sessions;



   o  Receive from a client the address of the final target server;



   o  Setup a session to the final server;



   o  Relay control messages and data between the client and the server;



   o  Perform access controls according to local policies.
==============

   BTW, do the implementations support both modes?

2: In my understanding, this version of converter supports "client has feature X, but server doesn't" cases while it doesn't support "server has feature X, but client doesn't" cases. Or, can we do both cases? It seems to me this point is a bit unclear in the draft.

[Med] The answer is Yes, it does even allow to negotiate some options directly between the client and the server:

(1)



   The main advantage of network-assisted conversion services is that

   they enable new TCP extensions to be used on a subset of the path

   between endpoints, which encourages the deployment of these

   extensions.  Furthermore, the Transport Converter allows the client

   and the server to directly negotiate TCP options for the sake of

   native support along the full path.

(2)

   Upon reception of a Connect TLV, and absent any rate limit policy or
   resource exhaustion conditions, a Transport Converter MUST attempt to
   establish a connection to the address and port that it contains.  The
   Transport Converter MUST use by default the TCP options that
   correspond to its local policy to establish this connection.  These
   are the options that it advertises in the Supported TCP Extensions
   TLV.

   Upon reception of an extended Connect TLV, and absent any rate limit
   policy or resource exhaustion conditions, a Transport Converter MUST
   attempt to establish a connection to the address and port that it
   contains.  It MUST include the options of the 'TCP Options' subfield
   in the SYN sent to the Server in addition to the TCP options that it
   would have used according to its local policies.  For the TCP options
   that are listed without an optional value, the Transport Converter
   MUST generate its own value.  For the TCP options that are included
   in the 'TCP Options' field with an optional value, it MUST copy the
   entire option for use in the connection with the destination peer.
   This feature is required to support TCP Fast Open.

Can you please clarify what is unclear in this text? Thank you.

I just thought that it might be good if we can be a bit more specific about what is not trying to solve.
For example, in my understanding, these are not supported in this draft. (BTW, I think this is good thing.)
1: servers do not initiate connection to converters

[Med] The document describes how this can be achieved using existing tools. That’s said, defining specific Convert objects to manage incoming connections is definitely out of scope.

2: don't support "server has feature X, but client doesn't" cases

[Med] Nothing prevent this in the current spec.

3: clients don't directly send SYNs to server when they need converter. (no transparent mode)

[Med] This is clearly mentioned in the abstract:

   This specification assumes an explicit model, where the proxy is
   explicitly configured on hosts.

By limiting the focus, I thought we can avoid having lengthy discussions on nasty corner cases.
We can discuss more complex architecture in future versions after we see this idea works well.
[Med] Agree. See one item below.


3: I am not sure how TLS works when converter does mptcp conversions.
    When a client have multiple subflows to a mptcp converter and use TLS for all subflows, can we establish an end-to-end TLS session between the client and the server?

[Med] Establishing an e2e TLS connection in the presence of a converter is similar to establishing such session in the presence of CGNs. This is already captured in the draft:


   Similar to address sharing mechanisms, the architecture does not

   interfere with end-to-end TLS connections [RFC8446<https://tools.ietf.org/html/rfc8446>] between the

   Client and the Server (Figure 3).

Do you see a specific problem?

Please let me explain a bit more and point it out if I miss something.

In case of mptcp converter, I think the connection will be like the below.

1: client and converter establishes a mptcp session and it has multiple subflows. (say, subflows are s1, s2, .. s5)
2: converter and server establish a single tcp connection.  (say r1)

Now, if all s1 from s5 use TLS for their connections and we want to use TLS for r1 as well, I think the converter will need to decrypt the payloads in s1 .. s5 and encrypt them for r1.
But, this will mean that TLS session is separated by the converter.

[Med] I see. The draft focuses mainly on the case where TLS is used between the client and the server. Under such conditions, the behavior is similar to the one for handling TLS in the presence of CGNs.

If TLS is to be used between the client and the converter and between the client and the server, this is not considered as a key requirement for the target deployments. Nevertheless, the document describes one first approach to illustrate how TLS can be used while ensuring 0-RTT proxying. That is, TLS is used between the client and the converter only to retrieve a Cookie TLV.

If TLS is also to be used in proxied connections, 0-RTT TLS1.3 should be used between the client/converter otherwise we lose the 0-RTT proxying feature of the protocol. We do suggest to declare those considerations out of scope.

An approach that can be considered when 0-RTT TLS1.3 is used, would be that the data to be sent to the server is governed by the e2e security association, while data destined explicitly to the converter are governed with the client/converter security association. The converter does not need to encrypt/decrypt data destined to the server.


Thanks,
--
Yoshi