Re: [multipathtcp] MPTCP FAST_CLOSE

Christoph Paasch <cpaasch@apple.com> Mon, 27 November 2017 05:35 UTC

Return-Path: <cpaasch@apple.com>
X-Original-To: multipathtcp@ietfa.amsl.com
Delivered-To: multipathtcp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 709591242F7 for <multipathtcp@ietfa.amsl.com>; Sun, 26 Nov 2017 21:35:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.795
X-Spam-Level:
X-Spam-Status: No, score=-2.795 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, SUBJ_ALL_CAPS=1.506] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
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 cXIz1NUAmJ4p for <multipathtcp@ietfa.amsl.com>; Sun, 26 Nov 2017 21:35:03 -0800 (PST)
Received: from mail-in21.apple.com (mail-out21.apple.com [17.171.2.31]) (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 ABA641200E5 for <multipathtcp@ietf.org>; Sun, 26 Nov 2017 21:35:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; d=apple.com; s=mailout2048s; c=relaxed/simple; q=dns/txt; i=@apple.com; t=1511760902; h=From:Sender:Reply-To:Subject:Date:Message-id:To:Cc:MIME-version:Content-type: Content-transfer-encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-reply-to:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=UvI67rS2hhKR/N53aY3YGeQyqWA71JD8jD/MkffViec=; b=xTVmmGLzv1GWJn2uY6CsBt4pJeGcfqsHt/RT+5jiv3tRGqV6yrftlJSE/CMgNoF3 O3l8ohX8mLC0F2CNixuu+Nq41EcIJ746eOhPHWkVgc06OihUdsZrm55y8HGG9olJ zlhrnYyi0ro2/w72r6vwzeVkS56SkC9IlvvhuFPP2VfBpkDt+fDAAzu2mmEqFbqY 5YHI14YLu3CSioLus4TmJBgDWvTtDbrEMK3nmVAHuvblaPANX8+Ek7BEzNFcN0Px bqVKUow6B77FSwLBtZIOM+yK7bw5+kaulH0HoXz748oO3gVy3oMHREPL1wzUbIK9 PqcImUNWtvOkqxw0hgWpbA==;
Received: from relay7.apple.com (relay7.apple.com [17.128.113.101]) (using TLS with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mail-in21.apple.com (Apple Secure Mail Relay) with SMTP id 6E.17.01566.604AB1A5; Sun, 26 Nov 2017 21:35:02 -0800 (PST)
X-AuditID: 11ab0215-49c869c00000061e-2b-5a1ba406a2d3
Received: from nwk-mmpp-sz09.apple.com (nwk-mmpp-sz09.apple.com [17.128.115.80]) by relay7.apple.com (Apple SCV relay) with SMTP id 00.0E.05443.604AB1A5; Sun, 26 Nov 2017 21:35:02 -0800 (PST)
MIME-version: 1.0
Content-transfer-encoding: 7bit
Content-disposition: inline
Content-type: text/plain; CHARSET="US-ASCII"
Received: from localhost ([17.234.80.188]) by nwk-mmpp-sz09.apple.com (Oracle Communications Messaging Server 8.0.2.1.20171102 64bit (built Nov 2 2017)) with ESMTPSA id <0P0200MYZA6DC750@nwk-mmpp-sz09.apple.com>; Sun, 26 Nov 2017 21:35:02 -0800 (PST)
Sender: cpaasch@apple.com
Date: Sun, 26 Nov 2017 21:35:01 -0800
From: Christoph Paasch <cpaasch@apple.com>
To: Yoshifumi Nishida <nishida@sfc.wide.ad.jp>
Cc: "Olivier.Bonaventure@uclouvain.be" <Olivier.Bonaventure@uclouvain.be>, multipathtcp <multipathtcp@ietf.org>, Alan Ford <alan.ford@gmail.com>, "philip.eardley@bt.com" <philip.eardley@bt.com>, François Finfe <francois.finfe@tessares.net>
Message-id: <20171127053501.GU39967@Chimay.local>
References: <c320f331-aa18-c4e2-34a9-1ec15cc627b3@uclouvain.be> <CAO249yfv_yadNPoVRJ5GkuHnXe6ZTENxUv9B9Az4NNYjgEs6tQ@mail.gmail.com>
In-reply-to: <CAO249yfv_yadNPoVRJ5GkuHnXe6ZTENxUv9B9Az4NNYjgEs6tQ@mail.gmail.com>
User-Agent: Mutt/1.9.1 (2017-09-22)
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDLMWRmVeSWpSXmKPExsUi2FCYqsu2RDrKYM9kM4uV51YwW2ydsInJ 4vPq62wWG5fcYLO40fCDxWLZ2hWMDmwebV8mM3nsnHWX3WPJkp9MHhdfX2f2uNM0ndnj1bHv LAFsUVw2Kak5mWWpRfp2CVwZq8+nFvwzqZjc/5a9gXG+WhcjJ4eEgInE9umdbF2MXBxCAmuZ JOZvfcYKk3j1YgcjROIgo8SKSR/ZQBK8AoISPybfY+li5OBgFpCXOHheFiTMLCAt8ejvDHYI W0vi+6NWFojeRiaJnvlbWEASwgKSEt137jCD2CwCqhJzn58Aa2ADanh7ux1ssYiAnsSH7x+Z IAZ1MEncOscB0SsrsbPxBwvEDYYSf268ZoVY0MYosW3/S0aQBKdAsMTpy9fADhUVUJbY23eI HaRIQuAym8SCKZ9ZJjCKzELyxCyEJ2YheWIWkicWMLKsYhTOTczM0c3MMzLUSywoyEnVS87P 3cQIiq7VTKI7GOe/MjzEKMDBqMTDq+AjHSXEmlhWXJl7iFGag0VJnHfNR6koIYH0xJLU7NTU gtSi+KLSnNTiQ4xMHJxSDYz95996Xy2f3bhNVVj6xDG3l485yia1XlqSFF1TJ5p5lGfLq8aF rR4z9kUq3Onpc+TbdGDJo6rQHdW9219fPX8hlanSxvbA/umdx7SnPIj8eHTqnqjofC+JZ1a8 0T86FwfwbjGx4JpYu+aP9Zx/WvVWcSt2yjGfmKKbtzfeO3Dmhp1dsn8/2+1WYinOSDTUYi4q TgQArJfZVY8CAAA=
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHLMWRmVeSWpSXmKPExsUi2FAcoMu2RDrK4MdnIYuV51YwW2ydsInJ 4vPq62wWG5fcYLO40fCDxWLZ2hWMDmwebV8mM3nsnHWX3WPJkp9MHhdfX2f2uNM0ndnj1bHv LAFsUVw2Kak5mWWpRfp2CVwZq8+nFvwzqZjc/5a9gXG+WhcjJ4eEgInEqxc7GLsYuTiEBA4y SqyY9JENJMErICjxY/I9li5GDg5mAXmJg+dlQcLMAtISj/7OYIewtSS+P2plgehtZJLomb+F BSQhLCAp0X3nDjOIzSKgKjH3+QmwBjaghre321lBbBEBPYkP3z8yQQzqYJK4dY4DoldWYmfj DxaIGwwl/tx4zQqxoI1RYtv+l4wgCU6BYInTl6+BHSoqoCyxt+8Q+wRGwVlI7p6FcPcsJHfP QnL3AkaWVYwCRak5iZXmeokFBTmpesn5uZsYwbFQmLqDsXG51SFGAQ5GJR5eBR/pKCHWxLLi ytxDjBIczEoivALlUlFCvCmJlVWpRfnxRaU5qcWHGKU5WJTEeT+vFI8SEkhPLEnNTk0tSC2C yTJxcEo1MHY8iva0yihcpjSxMKh2hcfrDulrv+/W3whXeftFKCDSzLSJtf6qXyPn/prX2xJv Wm+fHFl1+O+MHUGTF2ur6Ryef0HVVFz3685w1tLpZ7/l2J8N/Dvn4cfrp1ftqO9+uEhMcduu CVd4dtYdnL3hSeCC3vztgT755vUXlsfuWmsd5+Dy17zCxU2JpTgj0VCLuag4EQA3KkDVgQIA AA==
Archived-At: <https://mailarchive.ietf.org/arch/msg/multipathtcp/gIYAZdwoPh0TqIrmT3X1JShlYxI>
Subject: Re: [multipathtcp] MPTCP FAST_CLOSE
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.22
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: Mon, 27 Nov 2017 05:35:05 -0000

Hello Yoshifumi,

On 13/11/17 - 14:47:40, Yoshifumi Nishida wrote:
> Hi Olivier,
> 
> Thanks for the proposed texts. I have two comments on this.
> 
> 1: We now have two options for host A, is there any guideline which options
> should be chosen in a certain cases?'

this is probably implementation specific, depending on the reason why the
stack decides to force-close the connection. For the cases where the forced
closure is due to resource-limitations option R should be used.


Christoph

> 2: In case of option R, I think host A cannot receive packets from host B
> and cannot wait for timeouts. So, in some unfortunate cases, host B might
> need to wait for a long time.
>     Is this fine? Or, we have some mitigations?
> 
> --
> Yoshi
> 
> 
> On Mon, Nov 13, 2017 at 6:30 AM, Olivier Bonaventure <
> Olivier.Bonaventure@uclouvain.be> wrote:
> 
> > Hello,
> >
> > Sorry for being late with this, but the beginning of the fall semester is
> > always too busy for me.
> >
> > During the summer, there was a discussion on the FAST_CLOSE option that
> > was triggered by Francois.
> >
> > The current text of RFC6824bis uses the FAST_CLOSE option inside ACK
> > packets, but deployment experience has shown that this results in
> > additional complexity since the ACK must be retransmitted to ensure its
> > reliable delivery.
> >
> > Here is a proposed update for section 3.5 that allows a sender to either
> > send FAST_CLOSE inside ACK or RST while a receiver must be ready to process
> > both. Changes are marked with * *
> >
> > ------------------
> > 3.5.  Fast Close
> >
> >    Regular TCP has the means of sending a reset (RST) signal to abruptly
> >    close a connection. With MPTCP, a *reguler* RST only has the scope of
> > the
> >    subflow and will only close the concerned subflow but not affect the
> >    remaining subflows.  MPTCP's connection will stay alive at the data
> >    level, in order to permit break-before-make handover between
> >    subflows.  It is therefore necessary to provide an MPTCP-level
> >    "reset" to allow the abrupt closure of the whole MPTCP connection,
> >    and this is the MP_FASTCLOSE option.
> >
> >    MP_FASTCLOSE is used to indicate to the peer that the connection will
> >    be abruptly closed and no data will be accepted anymore.  The reasons
> >    for triggering an MP_FASTCLOSE are implementation specific.  Regular
> >    TCP does not allow sending a RST while the connection is in a
> >    synchronized state [RFC0793].  Nevertheless, implementations allow
> >    the sending of a RST in this state, if, for example, the operating
> >    system is running out of resources.  In these cases, MPTCP should
> >    send the MP_FASTCLOSE.  This option is illustrated in Figure 14.
> >
> >                             1                   2                   3
> >         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
> >        +---------------+---------------+-------+-----------------------+
> >        |     Kind      |    Length     |Subtype|      (reserved)       |
> >        +---------------+---------------+-------+-----------------------+
> >        |                      Option Receiver's Key                    |
> >        |                            (64 bits)                          |
> >        |                                                               |
> >        +---------------------------------------------------------------+
> >
> >                 Figure 14: Fast Close (MP_FASTCLOSE) Option
> >
> >    If Host A wants to force the closure of an MPTCP connection, *it has
> > two different options* :
> >
> >    - *Option A (ACK) : *Host A sends an ACK containing the MP_FASTCLOSE
> > option on one
> >       subflow, containing the key of Host B as declared in the initial
> >       connection handshake.  On all the other subflows, Host A sends a
> >       regular TCP RST to close these subflows, and tears them down.
> >       Host A now enters FASTCLOSE_WAIT state.
> >
> >    - *Option R (RST) : Host A sends a RST containing the MP_FASTCLOSE
> > option on all
> >       subflows, containing the key of Host B as declared in the initial
> >       connection handshake.  Host A can tear the subflows and the
> > connection down immediately.*
> >
> >
> >
> >    *If a host receives a packet with a valid MP_FASTCLOSE option, it shall
> > process it as follows :*
> >
> >    o  Upon receipt of an *ACK* with MP_FASTCLOSE, containing the valid
> > key, Host B answers on the same subflow with a TCP RST and tears down all
> >       subflows.  Host B can now close the whole MPTCP connection (it
> >       transitions directly to CLOSED state).
> >
> >    o  As soon as Host A has received the TCP RST on the remaining
> >       subflow, it can close this subflow and tear down the whole
> >       connection (transition from FASTCLOSE_WAIT to CLOSED states).  If
> >       Host A receives an MP_FASTCLOSE instead of a TCP RST, both hosts
> >       attempted fast closure simultaneously.  Host A should reply with a
> >       TCP RST and tear down the connection.
> >
> >    o  If Host A does not receive a TCP RST in reply to its MP_FASTCLOSE
> >       after one retransmission timeout (RTO) (the RTO of the subflow
> >       where the MPTCP_RST has been sent), it SHOULD retransmit the
> >       MP_FASTCLOSE.  The number of retransmissions SHOULD be limited to
> >       avoid this connection from being retained for a long time, but
> >       this limit is implementation specific.  A RECOMMENDED number is 3.
> >       If no TCP RST is received in response, Host A SHOULD send a TCP
> >       RST *with the MP_FASTCLOSE option* itself when it releases state in
> > order to clear any remaining state at middleboxes.
> >
> >  *o  Upon receipt of a RST with MP_FASTCLOSE, containing the valid key,
> > Host B tears down all subflows. Host B can now close the whole MPTCP
> > connection (it transitions directly to CLOSED state).*
> >
> > ----------
> >
> >
> > The burden of the MP_FASTCLOSE is on the host that decides to close the
> > connection (typically the server, but not necessarily). The text above
> > allows it to opt for either ACK or RST without adding complexity to the
> > other side.
> >
> >
> > Another point that might be discussed in RFC6824bis is how a host should
> > react when there are all the subflows associates to a Multipath TCP
> > connection are in the CLOSED state, but the connection is still alive. At
> > this point, it is impossible to send or receive data over the connection.
> > It should attempt to reestablish one subflow to keep the connection alive.
> >
> >
> > Olivier
> >