Re: [External] New Version Notification for draft-chen-quic-quicu-01.txt

Yongyi Yu <yuyongyi.yyy@bytedance.com> Fri, 30 September 2022 07:22 UTC

Return-Path: <yuyongyi.yyy@bytedance.com>
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 D4AE8C1524CE for <quic@ietfa.amsl.com>; Fri, 30 Sep 2022 00:22:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.895
X-Spam-Level:
X-Spam-Status: No, score=-6.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=bytedance-com.20210112.gappssmtp.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JZs-hNqWDDI6 for <quic@ietfa.amsl.com>; Fri, 30 Sep 2022 00:22:09 -0700 (PDT)
Received: from mail-pg1-x534.google.com (mail-pg1-x534.google.com [IPv6:2607:f8b0:4864:20::534]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0F32BC1522D0 for <quic@ietf.org>; Fri, 30 Sep 2022 00:22:08 -0700 (PDT)
Received: by mail-pg1-x534.google.com with SMTP id s206so3465552pgs.3 for <quic@ietf.org>; Fri, 30 Sep 2022 00:22:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=cc:to:subject:message-id:date:mime-version:from:references :in-reply-to:from:to:cc:subject:date; bh=wg8ze4Ft6SJ28ZtK2YxDHtY7xu45EyEc/CDSD1aQM58=; b=NQ14ous+MV2TUToaH6srEhpYR5g3PUuP8MK3lISIa1LOjSWtcbJLgKtCD3t4DBBvNd HEcUs/Qy4gDk1yn4Y4Ot9/M6tLrfDqk+l5zU2ro2RCBHXsDm8CMzF/VDIzXb1g266Mg4 8ilqMEUJDra3EFlmpweofMsAhYKts8FW6ald8OQDF+LABNq42C4qUKm/cqpD2fNVJelN 9kLxycqZZzOP88zS5eDvau6IehgQNgXP6EmAfIZCwB6e5bXHZXTdBmf7aP3FvzcVadH+ qn8eCyvILSBTs0Q++YBzyXbu9yqrzOwYWd9yz+jxXWu2SKiuryaDuvvRuLMtP+maQ9Jn TPJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:mime-version:from:references :in-reply-to:x-gm-message-state:from:to:cc:subject:date; bh=wg8ze4Ft6SJ28ZtK2YxDHtY7xu45EyEc/CDSD1aQM58=; b=pKKopI++/v1/GZFzMdAgw3A55nuGR7fcllrx61QNtjXyyUit1RBw1gfWP05LdIj+w7 UrUYhVsct4P/qzNJE8d2tJDa428+fRi7WOAK+AKj5Qd8IOnrHjyPqUYKFNR+MFRdJniP FSGiNZ0+hMdwmkd6Yhnml3NZkF5Yc+z0LMSaSBfwME9L06u0yIcGlvl4ADl5kGaVPMxl pH/MYD2W/2QCgscSrO07D9+XaTjSdi3SK3GkRDX1tKvayH0eNHxchRL2ve1NVfJI9Noq KoyERy1Ja3XagUNr27tIID8b9d3kXAKWTirOcWVwaCbA3Wp8+NzQ7eyBtP+1kCVrx2zk eBOw==
X-Gm-Message-State: ACrzQf1DEM1hyBJaY5albTUZKPFLFGrSztuBm9OHfBrqOOSnMc/aSOvM ikVmv5BEKK0X4oWglvy4xRDwjJRC7UAGPCGqyrxVgQ==
X-Google-Smtp-Source: AMsMyM5Y/y2am1vhsu12CRWVgC2Q7wjGQbie495vjgM/1Xg0KZz7eJNe/TWegXsGRPxH02b6b/wlMJlwVsWbmUEJX+8=
X-Received: by 2002:a05:6a00:1a55:b0:557:b7a3:6738 with SMTP id h21-20020a056a001a5500b00557b7a36738mr7394508pfv.61.1664522528037; Fri, 30 Sep 2022 00:22:08 -0700 (PDT)
Received: from 349319672217 named unknown by gmailapi.google.com with HTTPREST; Fri, 30 Sep 2022 00:22:07 -0700
In-Reply-To: <9FC125F7-C2A0-49DA-B3D6-2288E8142ADF@fb.com>
References: <166359205152.6422.10161941398731313578@ietfa.amsl.com> <CAGAnozYePCwo5S-EUTN4X=-EixNFVgF+1MwiD60-GDogw7ojnA@mail.gmail.com> <CAJ_4DfS8n5sZXEk0=Eojq_DEK6QGvgG6-KjOiVnHv8etxzCSkQ@mail.gmail.com> <AE5493E8-DFAD-42F2-A41C-4B924B8602EF@apple.com> <CAGAnozZHFChVbK2MNkxVm5XbF3msGyHuRy1er7OjAGPzE_EMLQ@mail.gmail.com> <d0f85f1306c94e8d92ad4ad706e9f48f@akamai.com> <CAGAnozaGaYNPFFcv3SXM9wqWJ+NWUh_+bTKFcp_D0_fuQUd0Aw@mail.gmail.com> <5f9517bfd0a34301b33a80c2dc90a984@akamai.com> <9FC125F7-C2A0-49DA-B3D6-2288E8142ADF@fb.com>
From: Yongyi Yu <yuyongyi.yyy@bytedance.com>
Mime-Version: 1.0
Date: Fri, 30 Sep 2022 00:22:07 -0700
Message-ID: <CAGAnozZMEbiMWse9h0jjSeTJB0xTnQyFYOupnkXYtQJBoGkVeg@mail.gmail.com>
Subject: Re: [External] New Version Notification for draft-chen-quic-quicu-01.txt
To: Konstantin Tsoy <ktsoy@fb.com>
Cc: "Lubashev, Igor" <ilubashe=40akamai.com@dmarc.ietf.org>, Tommy Pauly <tpauly@apple.com>, Ryan Hamilton <rch=40google.com@dmarc.ietf.org>, "quic@ietf.org" <quic@ietf.org>, 陈鉴平 <chenjianping.ireader@bytedance.com>, 景君羡 <jingjunxian@bytedance.com>, 刘天一 <liutianyi.lty@bytedance.com>
Content-Type: multipart/alternative; boundary="000000000000013c4505e9dfdac0"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/u7yJMkrrnA_14rwpEwq7jkbHG3k>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.39
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: Fri, 30 Sep 2022 07:22:12 -0000

Hi Konstantin,

Thanks for your reply. We think there are still some scenarios using HTTP
to deliver streaming data, such as delivering the uncompleted media segment
in low latency DASH, where one segment would be split into multiple chunks.
Would it be helpful if we try to come up with some mechanisms to enable
partial reliability feature for those scenarios without heavy impact on
caching infrastructure?

Back to the discussion about how to achieve partial reliability, we still
have some doubts about using one stream per data block.

1. Additional information and application logic are needed to manage order
and to achieve multiplexing. This do increase the complexity of the
application, and introduce unnecessary overheads.

2. When transmitting data in order, like media data, an application may
want to first retransmit the lost data that were sent most early. Since all
the streams are independent from each other, the transport layer may not
correctly decide whose lost data should be retransmitted first. Although
this problem might be resolved by indicating priority for each stream, the
behavior of transport layer is still implementation-dependent.

3. Creating, terminating and monitoring too many streams may cause
performance issues, depending on the implementation.

4. In order to properly cancel the streams which are expired, the
application may need to create many timers. It might be more graceful to
track the deadlines in the transport layer instead, since there are already
some timers for sending packets, retransmitting and so on.

Since our proposal aims at low latency transmission with partial
reliability, it should be compatible with other drafts which share the
similar target, like RUSH. With the features introduced in our proposal, we
believe an application will be able to achieve low latency transmission
while avoiding boosting its complexity too much.

The stream group approach you mentioned seems great, since we do realize
the importance for the application to combine multiple streams. And that is
exactly the reason we introduce the Correlation Frame. Looking forward to
discussing this approach further.

Thanks,
Yongyi.

From: "Konstantin Tsoy"<ktsoy@fb.com>
Date: Wed, Sep 28, 2022, 03:56
Subject: Re: [External] New Version Notification for
draft-chen-quic-quicu-01.txt
To: "Lubashev, Igor"<ilubashe=40akamai.com@dmarc.ietf.org>
Cc: "Yongyi Yu"<yuyongyi.yyy@bytedance.com>, "Tommy Pauly"<tpauly@apple.com>,
"Ryan Hamilton"<rch=40google.com@dmarc.ietf.org>, "quic@ietf.org"<
quic@ietf.org>, "陈鉴平"<chenjianping.ireader@bytedance.com>, "景君羡"<
jingjunxian@bytedance.com>, "刘天一"<liutianyi.lty@bytedance.com>
Yongyi,

As Matt described it below, we have experimented with a similar approach in
the past at Meta but did not ship it to production given the complexity it
brought. If you are using HTTP to deliver streaming data (I presume you
do), you are probably using some kind of caching mechanism(s) to not melt
your infrastructure. And this approach, while doable, presents certain
challenges for caching infrastructure as well - just to keep that in mind.

We’re experimenting with something called stream groups to achieve partial
reliability for variable latency streaming in a different way.
Basically we’re trying to use a QUIC stream abstraction for what you
describe as blocks - e.g. one block goes into separate stream. It could be
a video frame, video segment or some metadata. QUIC streams are a great
generic abstraction and a lot of partial reliability concepts could be laid
on top of it, instead of within - at least this is out current thinking
after having experimented with a few approaches.

You mentioned that ordering is what you lose with using this approach which
is true, however IMO it should be trivial to instrument the application
itself to manage order using either QUIC stream ids or by adding a few
bytes at the beginning of each stream for application to parse and manage
order (e.g. some kind of app space ever incrementing id defining each
“block” order).

Stream groups would allow application to bundle logical streams of data
together, and one *could* enforce stream order within a group if we make
stream id space scoped down to a group. We did not officially propose
stream groups to the community yet, but planning on doing so going forward.

Konstantin Tsoy


On Sep 27, 2022, at 9:10 AM, Lubashev, Igor <
ilubashe=40akamai.com@dmarc.ietf.org> wrote:

This Message Is From an External Sender
Yongyi,
Without going into the question of whether partially reliable streams are
necessary (as Matt said, Meta implemented them but is not using that
implementation in production), here are a few comments I have.

   1. Have you thought about the interaction of you draft with stream and
   connection flow control?  95% of the time I spent on my design was spent on
   thinking of ways to augment flow control to avoid extra round trips just to
   open a flow control window, while still ensuring that the resulting
   protocol is resilient against an adversarial endpoint forcing the peer to
   commit an unreasonable amount of resources (memory) to the connection.


   - 1. Our proposal splits a QUIC stream into many data blocks by Boundary
   Frame. The receiver would provide data to the application layer only when a
   data block is completely received. Therefore, the application layer needn't
   be aware of the gap at the expiration point or discard data already read.
   - 2. Because the stream is split into blocks, the sender could send or
   expire data by data blocks. Then the transport layer could track the
   message boundaries instead of the application layer.


   1. Section 4.4* Data Receiving* of your draft is saying the same.  It
   seems wrong to have the transport protocol specify the behavior of the QUIC
   library APIs so precisely.  It is ok to try to enable a particular library
   API, but the transport protocol’s specification ought to limit itself to
   the semantics of bytes on the wire.

Very best,

   - Igor

*From:* Yongyi Yu <yuyongyi.yyy@bytedance.com>
*Sent:* Tuesday, September 27, 2022 11:04 AM

Hi Igor,

Thanks for your replying. Our proposal indeed shares similar ideas with
yours, but there are also some difference. We'd like to update our draft to
clarify the difference in detail, and to briefly summary here, there are
three major points.

1. Our proposal splits a QUIC stream into many data blocks by Boundary
Frame. The receiver would provide data to the application layer only when a
data block is completely received. Therefore, the application layer needn't
be aware of the gap at the expiration point or discard data already read.

2. Because the stream is split into blocks, the sender could send or expire
data by data blocks. Then the transport layer could track the message
boundaries instead of the application layer.

3. With the introduction of Correlation Frame, we can combine multiple QUIC
streams into single data stream while avoiding head of line blocking. This
feature could be quite useful in many scenarios, e.g., transmitting both
video and audio data through single HTTP response.

Please do let me know if you have any further advice, and please do not
hesitate to point out if I make any mistakes.

Thanks,
Yongyi.
From: "Lubashev, Igor"< <ilubashe@akamai.com>ilubashe@akamai.com>
Date: Mon, Sep 26, 2022, 00:29
Subject: RE: [External] New Version Notification for
draft-chen-quic-quicu-01.txt
To: "Yongyi Yu"< <yuyongyi.yyy@bytedance.com>yuyongyi.yyy@bytedance.com>,
"Tommy Pauly"< <tpauly@apple.com>tpauly@apple.com>
Cc: "Ryan Hamilton"< <rch=40google.com@dmarc.ietf.org>
rch=40google.com@dmarc.ietf.org>, " <quic@ietf.org>quic@ietf.org"<
<quic@ietf.org>quic@ietf.org>, "陈鉴平"< <chenjianping.ireader@bytedance.com>
chenjianping.ireader@bytedance.com>, "景君羡"< <jingjunxian@bytedance.com>
jingjunxian@bytedance.com>, "刘天一"< <liutianyi.lty@bytedance.com>
liutianyi.lty@bytedance.com>
Are you trying to implement something like
<https://datatracker.ietf.org/doc/html/draft-lubashev-quic-partial-reliability-02>*https://datatracker.ietf.org/doc/html/draft-lubashev-quic-partial-reliability-02
<https://datatracker.ietf.org/doc/html/draft-lubashev-quic-partial-reliability-02>*
 or
<https://datatracker.ietf.org/doc/html/draft-lubashev-quic-partial-reliability-03>*https://datatracker.ietf.org/doc/html/draft-lubashev-quic-partial-reliability-03
<https://datatracker.ietf.org/doc/html/draft-lubashev-quic-partial-reliability-03>*?
(The -02 and -3 versions have somewhat different properties, and some
people prefer -02 version.)

   - Igor

*From:* Yongyi Yu < <yuyongyi.yyy@bytedance.com>*yuyongyi.yyy@bytedance.com
<yuyongyi.yyy@bytedance.com>*>
*Sent:* Friday, September 23, 2022 1:11 AM
*To:* Tommy Pauly < <tpauly@apple.com>*tpauly@apple.com <tpauly@apple.com>*>
*Cc:* Ryan Hamilton <
<rch=40google.com@dmarc.ietf.org>*rch=40google.com@dmarc.ietf.org
<rch=40google.com@dmarc.ietf.org>*>;  <quic@ietf.org>*quic@ietf.org
<quic@ietf.org>*; 陈鉴平<
<chenjianping.ireader@bytedance.com>*chenjianping.ireader@bytedance.com
<chenjianping.ireader@bytedance.com>*>; 景君羡 <
<jingjunxian@bytedance.com>*jingjunxian@bytedance.com
<jingjunxian@bytedance.com>*>; 刘天一<
<liutianyi.lty@bytedance.com>*liutianyi.lty@bytedance.com
<liutianyi.lty@bytedance.com>*>
*Subject:* Re: [External] New Version Notification for
draft-chen-quic-quicu-01.txt
Thanks for your replying. I agree "partial reliability" fits our draft
better, since we do retransmit lost data and provide in-order transmission.
And, our proposal could be compatible with H3, should we clarify the
behavior in the draft? Please do let me know if you have any further advice.

Thanks,
Yongyi.
From: "Tommy Pauly"< <tpauly@apple.com>*tpauly@apple.com <tpauly@apple.com>*
>
Date: Thu, Sep 22, 2022, 11:32
Subject: Re: [External] New Version Notification for
draft-chen-quic-quicu-01.txt
To: "Ryan Hamilton"<
<rch=40google.com@dmarc.ietf.org>*rch=40google.com@dmarc.ietf.org
<rch=40google.com@dmarc.ietf.org>*>
Cc: "于涌溢"< <yuyongyi.yyy@bytedance.com>*yuyongyi.yyy@bytedance.com
<yuyongyi.yyy@bytedance.com>*>, " <quic@ietf.org>*quic@ietf.org
<quic@ietf.org>*"< <quic@ietf.org>*quic@ietf.org <quic@ietf.org>*>, "陈鉴平"<
<chenjianping.ireader@bytedance.com>*chenjianping.ireader@bytedance.com
<chenjianping.ireader@bytedance.com>*>, "景君羡"<
<jingjunxian@bytedance.com>*jingjunxian@bytedance.com
<jingjunxian@bytedance.com>*>, "刘天一"<
<liutianyi.lty@bytedance.com>*liutianyi.lty@bytedance.com
<liutianyi.lty@bytedance.com>*>
I noticed that this draft does reference RFC 9221, and DATAGRAM frames.
If I’m understanding correctly, it seems like this is trying to define an
approach for what’s more commonly referred to as “partial reliability”,
which was something DATAGRAM explicitly didn’t try to include.
If this is the case, I think it would be useful to reframe the document in
terms of that, since the heavy use of “unreliable” is quite confusing. It
also isn’t clear to me how this proposal would work with specific
application protocols on top of QUIC — is this something that’s meant to be
compatible with H3, or is it for entirely separate use cases?
Best,
Tommy

On Sep 21, 2022, at 3:17 PM, Ryan Hamilton <
<rch=40google.com@dmarc.ietf.org>*rch=40google.com@dmarc.ietf.org
<rch=40google.com@dmarc.ietf.org>*> wrote:
QUIC has support for unreliable data via the DATAGRAM frame, *RFC 9221*
<https://www.rfc-editor.org/info/rfc9221>. It seems that this new proposal
attempts to add unreliable data support not to QUIC, but to QUIC *streams*.
QUIC streams, of course, offer a reliable, in-order, sequence of bytes. Did
you consider starting with DATAGRAMs, and building from there instead?

Cheers,

Ryan
On Wed, Sep 21, 2022 at 1:14 AM 于涌溢 <
<yuyongyi.yyy@bytedance.com>*yuyongyi.yyy@bytedance.com
<yuyongyi.yyy@bytedance.com>*> wrote:

Deal all,
We would like to introduce an extension of the QUIC protocol for unreliable
data transmission called QUIC Unreliable (QUICU) . The following draft is
submitted for your consideration and comments. We would also like to
present this at IETF 115 to discuss further.
To summarize on this draft: it describes an extension of the QUIC protocol
for unreliable data transmission called QUIC Unreliable (QUICU), which
mainly through the definition and use of three new types of frames, namely
the Expire Offset Frame, Boundary Frame, and Correlation Frame. The main
purpose of this extension is to reduce data delivery delay. Through
controlling the timing and scope of packet losses, QUICU reduces useless
transmission to improve transmission efficiency, reduces head-of-line
blocking to improve transmission timeliness, which are beneficial to
delay-sensitive applications, especially audio and video applications. This
document describes the motivation, the operations, and the wire formats of
the three new types of frames.
Link to html:
<https://datatracker.ietf.org/doc/html/draft-chen-quic-quicu-01>*https://datatracker.ietf.org/doc/html/draft-chen-quic-quicu-01
<https://datatracker.ietf.org/doc/html/draft-chen-quic-quicu-01>*
Please feel free to reach us for any comments or questions on this.
Thanks,
Yongyi.

---------- Forwarded message ---------
From:  <internet-drafts@ietf.org>*internet-drafts@ietf.org
<internet-drafts@ietf.org>*
Date: Mon, Sep 19, 2022, 20:54
Subject: [External] New Version Notification for
draft-chen-quic-quicu-01.txt
To: "Jianping Chen"<
<chenjianping.ireader@bytedance.com>*chenjianping.ireader@bytedance.com
<chenjianping.ireader@bytedance.com>*>, "Junxian Jing"<
<jingjunxian@bytedance.com>*jingjunxian@bytedance.com
<jingjunxian@bytedance.com>*>, "Tianyi Liu"<
<liutianyi.lty@bytedance.com>*liutianyi.lty@bytedance.com
<liutianyi.lty@bytedance.com>*>, "Yongyi Yu"<
<yuyongyi.yyy@bytedance.com>*yuyongyi.yyy@bytedance.com
<yuyongyi.yyy@bytedance.com>*>
A new version of I-D, draft-chen-quic-quicu-01.txt
has been successfully submitted by Yongyi Yu and posted to the
IETF repository.
Name:                draft-chen-quic-quicu
Revision:        01
Title:                An Unreliable Extension to QUIC
Document date:        2022-09-19
Group:                Individual Submission
Pages:                10
URL:
<https://www.ietf.org/archive/id/draft-chen-quic-quicu-01.txt>*https://www.ietf.org/archive/id/draft-chen-quic-quicu-01.txt
<https://www.ietf.org/archive/id/draft-chen-quic-quicu-01.txt>*
Status:
<https://datatracker.ietf.org/doc/draft-chen-quic-quicu/>*https://datatracker.ietf.org/doc/draft-chen-quic-quicu/
<https://datatracker.ietf.org/doc/draft-chen-quic-quicu/>*
Htmlized:
<https://datatracker.ietf.org/doc/html/draft-chen-quic-quicu>*https://datatracker.ietf.org/doc/html/draft-chen-quic-quicu
<https://datatracker.ietf.org/doc/html/draft-chen-quic-quicu>*
Diff:
<https://www.ietf.org/rfcdiff?url2=draft-chen-quic-quicu-01>*https://www.ietf.org/rfcdiff?url2=draft-chen-quic-quicu-01
<https://www.ietf.org/rfcdiff?url2=draft-chen-quic-quicu-01>*
Abstract:
  QUIC Unreliable (QUICU) is an extension of the QUIC protocol for
  unreliable data transmission, mainly through the definition and use
  of three new types of frames, namely the Expire Offset Frame,
  Boundary Frame, and Correlation Frame. The main purpose of this
  extension is to reduce data delivery delay. Through controlling the
  timing and scope of packet losses, QUICU reduces useless transmission
  to improve transmission efficiency, reduces head-of-line blocking to
  improve transmission timeliness, which are beneficial to delay-
  sensitive applications, especially audio and video applications.
  This document describes the motivation, the operations, and the wire
  formats of the three new types of frames.
The IETF Secretariat