Re: Packet number spaces in multipath (was Re: What to do about multipath in QUIC)

Christian Huitema <huitema@huitema.net> Thu, 26 November 2020 17:53 UTC

Return-Path: <huitema@huitema.net>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 80CCB3A15B4 for <quic@ietfa.amsl.com>; Thu, 26 Nov 2020 09:53:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.888
X-Spam-Level:
X-Spam-Status: No, score=-1.888 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=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 1Y-CuovMsOUL for <quic@ietfa.amsl.com>; Thu, 26 Nov 2020 09:53:47 -0800 (PST)
Received: from mx43-out1.antispamcloud.com (mx43-out1.antispamcloud.com [138.201.61.189]) (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 AADBB3A15B3 for <quic@ietf.org>; Thu, 26 Nov 2020 09:53:46 -0800 (PST)
Received: from xse416.mail2web.com ([66.113.197.162] helo=xse.mail2web.com) by mx16.antispamcloud.com with esmtp (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1kiLSb-00078C-9K for quic@ietf.org; Thu, 26 Nov 2020 18:53:42 +0100
Received: from xsmtp21.mail2web.com (unknown [10.100.68.60]) by xse.mail2web.com (Postfix) with ESMTPS id 4Chljn5PS5z1MCf for <quic@ietf.org>; Thu, 26 Nov 2020 09:53:33 -0800 (PST)
Received: from [10.5.2.18] (helo=xmail08.myhosting.com) by xsmtp21.mail2web.com with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1kiLSX-0003rn-JN for quic@ietf.org; Thu, 26 Nov 2020 09:53:33 -0800
Received: (qmail 20453 invoked from network); 26 Nov 2020 18:00:47 -0000
Received: from unknown (HELO [192.168.1.105]) (Authenticated-user:_huitema@huitema.net@[172.58.46.222]) (envelope-sender <huitema@huitema.net>) by xmail08.myhosting.com (qmail-ldap-1.03) with ESMTPA for <kazuhooku@gmail.com>; 26 Nov 2020 18:00:46 -0000
Subject: Re: Packet number spaces in multipath (was Re: What to do about multipath in QUIC)
To: Markus.Amend@telekom.de, jri.ietf@gmail.com
Cc: quic@ietf.org, Dirk.von-Hugo@telekom.de, kazuhooku@gmail.com
References: <538215d1-3b9e-4784-920d-03be4c3a503a.miaoji.lym@alibaba-inc.com> <CAHgerOGGyAkE=TbCSuTO=T6HK9EM_+m+ASwPRm=o33HBrx7p3Q@mail.gmail.com> <CANatvzz_KSBws_upnx00P7JK=MbgyDRrR5n2VJcr1_=y=P6dfQ@mail.gmail.com> <062fe812-8afb-d946-8336-1f4dc5ebeaaf@uclouvain.be> <7540ef46-9948-c76c-3617-5755be3cdf37@huitema.net> <CANatvzymE+XRXUMBH2quGi=VEUNXDR_Eoer+o6p9+nkD-KFisQ@mail.gmail.com> <3bb7f359-ebe5-7a54-0224-bb1f5f1754af@huitema.net> <CANatvzxyj3nXP+GrnMkexWV-VN7Og4EGXysq1o0W2e2JGWzDrw@mail.gmail.com> <651e0ae1-0a5e-89e9-55c0-c33439599da6@huitema.net> <CANatvzw4Yg9aX2qyaGfc9sS=oEFOHxp-ZLSLF0EYNa8t6uN-iA@mail.gmail.com> <4b96dbb8-e72c-7f99-0bb3-9ee27b7bda78@huitema.net> <CANatvzz_H205MPP67Vnuqp0mwhM0TUbHvA5CfVGeoivCLcUdgw@mail.gmail.com> <850c5bdd-948e-269a-1488-77a77843d5e6@huitema.net> <CACpbDccY3f2wMd5vFzK=NC=Me=EhgmFWMDS7TTBZFtG2bm=JSg@mail.gmail.com> <LEJPR01MB0635984DC5E548E2D7859A4EFAF90@LEJPR01MB0635.DEUPRD01.PROD.OUTLOOK.DE>
From: Christian Huitema <huitema@huitema.net>
Message-ID: <2c6150d9-968c-8c8b-af45-505e9529c910@huitema.net>
Date: Thu, 26 Nov 2020 09:53:31 -0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0
MIME-Version: 1.0
In-Reply-To: <LEJPR01MB0635984DC5E548E2D7859A4EFAF90@LEJPR01MB0635.DEUPRD01.PROD.OUTLOOK.DE>
Content-Type: multipart/alternative; boundary="------------52B54BD628A8A44D2D985A6B"
Content-Language: en-US
X-Originating-IP: 66.113.197.162
X-Spampanel-Domain: xsmtpout.mail2web.com
X-Spampanel-Username: 66.113.197.0/24
Authentication-Results: antispamcloud.com; auth=pass smtp.auth=66.113.197.0/24@xsmtpout.mail2web.com
X-Spampanel-Outgoing-Class: unsure
X-Spampanel-Outgoing-Evidence: Combined (0.15)
X-Recommended-Action: accept
X-Filter-ID: Mvzo4OR0dZXEDF/gcnlw0fJVsTFCFA1YlcTpjJcy6PSpSDasLI4SayDByyq9LIhVUZbR67CQ7/vm /hHDJU4RXkTNWdUk1Ol2OGx3IfrIJKywOmJyM1qr8uRnWBrbSAGDcnqpk5VeF3xR4kF6iVwRtbgN zB/4Jkrw1eDLcif59ft1FwUlqyW9aLgCKbY9vF0+U7Tmz6iKnkQL9gqsxD347235Nhqq+/HvroPq 8GSPg+5hmwN8D4LrepG7AX8WNwY8X2XX9bIsGDSYq5OAASmskY6jSvfpO+1kZkomjtjB6X5Q5Q9f RUeIpTIC2ySfqvnqLwoxlgatmaBb0rBiK9xbkDrUqzcKIief90MVLZY9LbIZh9+IQ1oS9LBn3VIP 95Jz7ujRlJ9wSMlhvaudJXZ9EIBG/qaR+8r9SKFMmPJLf850OvZYsmoVQuOIhwKLK6IKBNB4LZ0v UHHKTzJX7b1JhLSQQ4vSj0QEim26t/Moy0UPX5E73H1QfrH/5kkrV/Cr0bm2vWdo8usP65i82q1C dZgGrpL44wdx9eXqjQjbvUopOMQJvQ/Ck3iiU+4DQAj3fuQgzT3K9JUHTNiGwfwAm9uTq5jW+H8q XQEUfWldI9mTKljyBuI7LCehsWeGXQOJ2VWOXbE3kvQCCGONX8h/2iI6YUrWqkuiHt9VIJOybYAv UwPy3x0FYtCNEb10sHyQCLHEvD1OqP6bgZ4L66GcgBg66gs5OuzYxJgw5atIxeNDvjI/CYe5WPy0 +t1RP0azkUQOB+A1Y6zvsc5SL1bZZpxMPnetLBJMh51NiRRoHID7nwVsDvP9wUSrxPexxvkvmiK7 x42VjdzChZMe6O/Did+/hGXTmfhE+Dx2/NyzMXronnOWE/FW8fvzdgQvo9YVvOnCUbNPgcPcQwzM gKHyQxUo+ql2ySTkvEFH/23XMww2BnTTFGX5/yI4Ky+1ZJcbGqc5H4PEZHeoI/d6LWFf332z7LMw LGdoi9FMQ5j9dQUvMi1YKAun15JQSJLyCT5k+MTObVKxHy/dols381l9r9ft9daDonlwd6LnuX+J u10=
X-Report-Abuse-To: spam@quarantine11.antispamcloud.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/T0dhUO2va6DdsI7qhsvzRWjZ7ak>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Nov 2020 17:53:50 -0000

If you want to send unreliable data with sequencing information, it 
might be simpler to use STREAM frame in "unreliable" mode than to use 
Datagram frames.

On 11/26/2020 3:34 AM, Markus.Amend@telekom.de wrote:
>
> Dear all,
>
> sry for hijacking this conversation. I’m not very familiar with the 
> different multipath designs for QUIC, however I want to draw attention 
> to multipath re-ordering which probably becomes important when 
> multipath is combined with DATAGRAM.
>
> As long as multipath QUIC is operated with strict reliability (similar 
> to TCP), re-ordering on receiver side is a simple process known from 
> MPTCP. Introducing unreliable DATAGRAM transmission makes it more 
> challenging on receiver side to maintain the packet order, because it 
> is not easy to differentiate between delayed and lost packets. To 
> avoid HoL, a multipath re-ordering process may benefit from having 
> connection and path sequencing. In 
> https://tools.ietf.org/html/draft-amend-iccrg-multipath-reordering-01 
> <https://tools.ietf.org/html/draft-amend-iccrg-multipath-reordering-01> 
> we intend to describe this in section 5.6, how fast packet loss 
> detection can be applied using these different packet sequence spaces. 
> Still the description is meaningless und will be updated until next 
> IETF, however we have successfully implemented this approach in a 
> MP-DCCP prototype, which faces similar challenges in terms of 
> re-ordering. That means, fast packet loss detection is very beneficial 
> for the receiver re-ordering process to not lose time until an 
> outstanding packet is assumed lost.
>
> Br
>
> Markus
>
> **
>
> *From:*QUIC <quic-bounces@ietf.org> *On Behalf Of *Jana Iyengar
> *Sent:* Mittwoch, 25. November 2020 04:35
> *To:* Christian Huitema <huitema@huitema.net>
> *Cc:* IETF QUIC WG <quic@ietf.org>; Kazuho Oku <kazuhooku@gmail.com>
> *Subject:* Packet number spaces in multipath (was Re: What to do about 
> multipath in QUIC)
>
> (I'm taking Spencer's suggestion to spin off a new thread.)
>
> Christian, Kazuho,
>
> Slowly catching up on this, and apologies if I'm missing anything that 
> was previously discussed in the centi-thread earlier.
>
> If I understand the design correctly, it makes sense to me, and is 
> very close to what we had implemented in Chromium a while ago.
>
> Having thought about this problem several times in the past, I'd like 
> to share a few points that come to mind.
>
> First though, a point on terminology: the receiver maintains a 
> separate "ReceivedPackets" for each CID, probably for each CID 
> sequence number (CSN). Let's please not call this a SACK Dashboard, to 
> avoid confusion.
>
> On the question of sending more than 2^32 packets, I think that 
> resetting the packet number (PN) is ok on new CIDs. I don't see why a 
> sender would need to maintain continuity across multiple paths 
> anyways, since the CC and loss recovery contexts are going to be 
> different across paths. A sender _could_ still maintain these packets 
> in the same "SentPackets" structure if it wants to, it would need an 
> internal representation of CSN+PN to key off.
>
> ACK Frames:
>
> ------------------
>
> Kazuho pointed out that when acknowledging, the ACK frame format 
> should include CSN. I agree. I would argue for a design where a 
> receiver uses an ACK frame per CSN (and encodes the CSN explicitly). 
> There are multiple values for doing this, the primary being that you 
> benefit from compression when PNs are contiguous within a CSN.
>
> Return Path:
>
> -----------------
>
> There are other ways to decide which return path to send an ACK on 
> this, but I would propose that a receiver respond on the most recently 
> active forward path. That is, the path on which a packet was most 
> recently received. This has the natural effect that a sender that 
> wants to distribute traffic in a particular way also causes ACKs to be 
> distributed similarly across the corresponding reverse paths.
>
> RTT measurements:
>
> ---------------------------
>
> The return path for ACK frames will impact RTT measurements. That is 
> fine. It is more important that information reach the sender as soon 
> as possible than that it should not affect RTT measurements; we can 
> fix the sender to measure and compensate as necessary. The estimated 
> RTT statistics reflect the distribution of samples, and if both paths 
> are being used, then the SmoothedRTT will reflect the expected value 
> based on the traffic distribution across paths.
>
> That said, it might be useful to track some new stats, especially 
> about how much later is a "late ack" -- an ACK frame that contains no 
> useful information -- is received. I'd have to think a bit more about 
> this, but I think we can devise a stat here. This gives us useful 
> information on the longest return path, which we can then explicitly 
> use as part of the PTO computations, to compensate for the fact that 
> the RTT is based on the shortest return path. (I would _not_ use this 
> stat in the time-based loss detection timer,  but PTO ought to be fine.)
>
> - jana
>
> On Tue, Nov 17, 2020 at 9:42 AM Christian Huitema <huitema@huitema.net 
> <mailto:huitema@huitema.net>> wrote:
>
>     I have been thinking about variations of that. I think we are
>     making progress here.
>
>     If we follow your design, we get two constraints:
>
>     1) That the receive maintains an acknowledgement list based on the
>     CID through which the packets are received.
>
>     2) That the senders guarantee that the same sequence number will
>     not be used more than once with a specific CID.
>
>     The main implementation cost is for receivers. They have to
>     allocate and maintain a "SACK Dashboard" in the context of each
>     CID that they issue.
>
>     Senders have lots of control. For example, the "only once"
>     condition is also met if a simple sender uses a single number
>     space, as long as it does not send more than 2^32 packets. That
>     makes the design reasonably easy to implement for constrained
>     implementations.
>
>     Zero length CID are still possible, but that means the receiver
>     supports only one PN space per sender. Multipath is not
>     impossible, but you end up managing a single RTT and a single
>     recovery structure. Not very good, but similar to what happens if
>     multipath is implemented at the IP level.
>
>     There is still an issue for coordinating the take down of a path.
>     Suppose that a client was using both Wi-Fi and LTE, and moves out
>     of Wi-Fi range. The server will find out eventually that the
>     packets sent to the Wi-Fi path are never acknowledged, but that
>     may take some time. It would be better if the client could send a
>     message saying something like "Abandon this path". That's not the
>     same semantic as "retire this CID". We need a new frame for that.
>
>     "Abandon this path" is an extreme case. There are half-way steps,
>     like manage the relative priority of a path.
>