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

Ryan Hamilton <rch@google.com> Tue, 27 September 2022 22:06 UTC

Return-Path: <rch@google.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 D6A26C15B266 for <quic@ietfa.amsl.com>; Tue, 27 Sep 2022 15:06:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.596
X-Spam-Level:
X-Spam-Status: No, score=-17.596 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, 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, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 Mo9sGsptUB0j for <quic@ietfa.amsl.com>; Tue, 27 Sep 2022 15:06:43 -0700 (PDT)
Received: from mail-yw1-x1133.google.com (mail-yw1-x1133.google.com [IPv6:2607:f8b0:4864:20::1133]) (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 EE21DC15271B for <quic@ietf.org>; Tue, 27 Sep 2022 15:06:42 -0700 (PDT)
Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-3511e80f908so50470697b3.2 for <quic@ietf.org>; Tue, 27 Sep 2022 15:06:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=CIYbMJy8OjmfdK3svplYWZs9CviyN2Ga2BZ6VFEqEXY=; b=IpP/pi6B0B9IFzz2N4DZdZ6UVEasZF2oxo8M7KAKro3OzlzchFlI8VLmhbXD1pbJY5 C/q74Kgx4GXiHhNxS5KMvpIRu7+2t02wHUoOQMKnzK01AHP48QdyGJ1T8bs1X7qHukcn EfqfERy1ec8RmtDreWmQMYKc4TPcGfuGedSjooGfXT5RjSIf0bzD4wwhOGaunw36lqrj 9d45zsFoSUxRGCf2Bmq7B9TrGTbhQJqT7kCtuCgWj4vyVPr3uSu6LoYi+BLdCIOYfM0x AT9ixKHzNKBXQQwMe44JshDazCejzhibBsBPMXtmlJvm+QSGg/Lz/vtHQgVmOrQ2KkkL YW5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=CIYbMJy8OjmfdK3svplYWZs9CviyN2Ga2BZ6VFEqEXY=; b=K3fr85qC8OryCafD8g/gMaqe3XMAH/YBU06+QLqk2Ursim9thsj9RmOGhDSLifzj9+ cOenfZaOzjd1dV8L8Ne1xDhbl1Zr9NB+ztuI07nbgZ4q/0Cj9tH2YlrskgOxjZ0v4EF7 GrAC8VRcTnyNovViKNBsAC0QyJ0j+nLyZOAOBTXySm9Puig+TGxBx1zGlUIH12iDoWoz 0hXoa0nEZbM45b3fikqzItl7dI+9ZE+FzChgWghj45IU+7egCFZrHchxS7ofd5AeGWQ3 uN4ohrMj89IZxfZj0C7DLY9J1+dRclYsFMTYZMPZZHuklUN5c2e0OiiIE1bBp9GIXXon tqrg==
X-Gm-Message-State: ACrzQf2tJ0b+h+aV6V2Qc7xMgF0rFBD8z7vP/uN9772iZbaRqzUyBr0M VBFPQjVXLJ3b23QVN0bsDyPVHTOL/Fq+F7mXrI17sgnfv+g=
X-Google-Smtp-Source: AMsMyM67BxioXy9JSqKoYpbcuJP0aizy7ws55XVoPMZp3YbQ/I1Hb31qGrBBbjNLe48n4YmIY1yYO4LEiYtojrbwbJQ=
X-Received: by 2002:a0d:cbc5:0:b0:352:4670:ee2c with SMTP id n188-20020a0dcbc5000000b003524670ee2cmr4034902ywd.84.1664316401710; Tue, 27 Sep 2022 15:06:41 -0700 (PDT)
MIME-Version: 1.0
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>
In-Reply-To: <9FC125F7-C2A0-49DA-B3D6-2288E8142ADF@fb.com>
From: Ryan Hamilton <rch@google.com>
Date: Tue, 27 Sep 2022 15:06:29 -0700
Message-ID: <CAJ_4DfTx05ixy8RiqUzXg8+EDyGNaS5Mgcd6V4PbrDGUUw5ueA@mail.gmail.com>
Subject: Re: [External] New Version Notification for draft-chen-quic-quicu-01.txt
To: Konstantin Tsoy <ktsoy=40fb.com@dmarc.ietf.org>
Cc: "Lubashev, Igor" <ilubashe@akamai.com>, Yongyi Yu <yuyongyi.yyy@bytedance.com>, Tommy Pauly <tpauly@apple.com>, "quic@ietf.org" <quic@ietf.org>, 陈鉴平 <chenjianping.ireader@bytedance.com>, 景君羡 <jingjunxian@bytedance.com>, 刘天一 <liutianyi.lty@bytedance.com>
Content-Type: multipart/alternative; boundary="000000000000eb551b05e9afdbba"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/U7VRNa4JntWkXpdTWuwsRMROvZc>
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: Tue, 27 Sep 2022 22:06:46 -0000

This "stream group" approach seems like an excellent path forward. Look
forward to hearing more about it!

On Tue, Sep 27, 2022 at 12:56 PM Konstantin Tsoy <ktsoy=
40fb.com@dmarc.ietf.org> wrote:

> 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>
> 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>, "Tommy Pauly"<
> tpauly@apple.com>
> Cc: "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>
> 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>
>  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>?
> (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>>
> *Sent:* Friday, September 23, 2022 1:11 AM
> *To:* 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>; 陈鉴平<
> *chenjianping.ireader@bytedance.com* <chenjianping.ireader@bytedance.com>
> >; 景君羡 <*jingjunxian@bytedance.com* <jingjunxian@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>>
> 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>>
> Cc: "于涌溢"<*yuyongyi.yyy@bytedance.com* <yuyongyi.yyy@bytedance.com>>, "
> *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>>
> 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>>
> 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>> 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>
>
> 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>
> 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>>, "Junxian Jing"<
> *jingjunxian@bytedance.com* <jingjunxian@bytedance.com>>, "Tianyi Liu"<
> *liutianyi.lty@bytedance.com* <liutianyi.lty@bytedance.com>>, "Yongyi Yu"<
> *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>
> Status:         *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>
> Diff:
> *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
>
>
>