Re: [Moq] Track Bundles and priorities

Christian Huitema <huitema@huitema.net> Sat, 18 March 2023 15:54 UTC

Return-Path: <huitema@huitema.net>
X-Original-To: moq@ietfa.amsl.com
Delivered-To: moq@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B4397C151553 for <moq@ietfa.amsl.com>; Sat, 18 Mar 2023 08:54:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.898
X-Spam-Level:
X-Spam-Status: No, score=-6.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
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 Qemd5ACjxxdn for <moq@ietfa.amsl.com>; Sat, 18 Mar 2023 08:54:21 -0700 (PDT)
Received: from mx36-out10.antispamcloud.com (mx36-out10.antispamcloud.com [209.126.121.30]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 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 B27C5C151544 for <moq@ietf.org>; Sat, 18 Mar 2023 08:54:21 -0700 (PDT)
Received: from xse505.mail2web.com ([66.113.197.251] helo=xse.mail2web.com) by mx191.antispamcloud.com with esmtp (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1pdYsj-000HEA-3G for moq@ietf.org; Sat, 18 Mar 2023 16:54:19 +0100
Received: from xsmtp22.mail2web.com (unknown [10.100.68.61]) by xse.mail2web.com (Postfix) with ESMTPS id 4Pf5CG3kJbz7TX for <moq@ietf.org>; Sat, 18 Mar 2023 08:54:02 -0700 (PDT)
Received: from [10.5.2.12] (helo=xmail02.myhosting.com) by xsmtp22.mail2web.com with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1pdYsc-0003P5-9Y for moq@ietf.org; Sat, 18 Mar 2023 08:54:02 -0700
Received: (qmail 29975 invoked from network); 18 Mar 2023 15:54:01 -0000
Received: from unknown (HELO [192.168.1.104]) (Authenticated-user:_huitema@huitema.net@[172.58.43.192]) (envelope-sender <huitema@huitema.net>) by xmail02.myhosting.com (qmail-ldap-1.03) with ESMTPA for <kixelated@gmail.com>; 18 Mar 2023 15:54:01 -0000
Message-ID: <294a6cfd-a1c9-6f79-0ef7-8ddefb27cfa7@huitema.net>
Date: Sat, 18 Mar 2023 08:54:00 -0700
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0
Content-Language: en-US
To: Luke Curley <kixelated@gmail.com>, MOQ Mailing List <moq@ietf.org>
References: <CAHVo=ZmGnhhjbPhEacoQNRFMEY2UF+_VKmd4-gML4GFPx7V-7Q@mail.gmail.com>
From: Christian Huitema <huitema@huitema.net>
In-Reply-To: <CAHVo=ZmGnhhjbPhEacoQNRFMEY2UF+_VKmd4-gML4GFPx7V-7Q@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Originating-IP: 66.113.197.251
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.16)
X-Recommended-Action: accept
X-Filter-ID: Pt3MvcO5N4iKaDQ5O6lkdGlMVN6RH8bjRMzItlySaT9dR4Abm+yhH2U2hm1W9tcFPUtbdvnXkggZ 3YnVId/Y5jcf0yeVQAvfjHznO7+bT5xu6w3L23EOleH9nr/v5kMyj3CSdYahsEhiizd3WfZtEQLZ B47Dfw5wMxxKbdtn3vTlYLLlWSy3OGfGBNeqx2anHyJxjDLo4/ugN15VVJm4KWrxEaaKeSxe0Wrx 6M4G5/Wm4Zd53xWOh54QqC5fJ2uRQ6eegBKkpPhxZyjzPXAKM1xh7hoyMoWHMkqYfQEaAmuvSlEd G26Zn4eABnTHraxGpbt3W3gfNnuKkqGP09ZKLP25Cgscc2Nqd9azmDa4ZbYxn04qRLKGrOrEzQDq o2Fe5e0H1p2YD3fIDgqE3F/hSENKwnAR2oVisY+bnEqWCKi5klmK1va3wJScg92pg//jdNpXP/ul EV6DIUDLc0Yd6iTlYE+Zcn8p1rPpG64P1y7nVrUQfxkYoV3jt7fqlPgR+jdIhbfj7vAUd+Fv1cEH clnsyWu8Q0HDoORE+fy5gr3LgKffTIgl7nuGO/IJU1342OUMeHyTpNN0eXybX/w7/4a+Zyc1sUYl ckMDbruAhxeQ6YVfgO0a4JVaOBOIyooBOnC1CDMMctGzLBw4yQZGBUDUfR2X5o2vYrsgMwlbfsKt WGWaoBPGY8XVK+HJnw3ZyrYP4RxyEyLVp2K5teOg0jsNcXMGA2O8jqHMH0k/M0LFFwtmK8QNyakB sz1lFzQCdFkLxYy/+VYO3yYZqVxp+tJLUq8EG64JOo38DByDeKrmZd05HcaSqAcgvJRCp9ucWHHi /BynWyjHQVKmvSHIixxwEiTVJqDh0qKoKsXx5lkS1/DDhDvyBSQLRh/DbTAJQ7nuIK/fYd5d+gJJ L5gCox0sl4OFxBT1d23OUWLVuGpBtL9ewJnoHKUNLZpf7DfZK/JdWvgd2/FibEdMM0Jnxu/VcARR JJg0CPVGXFYA7xCx7SWZBpdAUArn/St00aGa08t44IPL25P8DLNzMDIRDLdvK/cKOEqlCIPGIfYQ DNLcNVwigJ23suxKKQl6t4RW
X-Report-Abuse-To: spam@quarantine14.antispamcloud.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/kp8v1CyOJ-8qDKBnjfmAMo4ORqg>
Subject: Re: [Moq] Track Bundles and priorities
X-BeenThere: moq@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Media over QUIC <moq.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/moq>, <mailto:moq-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/moq/>
List-Post: <mailto:moq@ietf.org>
List-Help: <mailto:moq-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/moq>, <mailto:moq-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Mar 2023 15:54:25 -0000


On 3/17/2023 11:22 PM, Luke Curley wrote:

... a fairly long message about bundles, so let's look a the
specific issue of how to apply priorities across multiple tracks.

> ...
> *How does prioritization work?*
> The QUIC library transmits the next stream in ascending send order. During
> congestion, the streams with the highest send orders are starved and
> eventually reset. Many QUIC libraries already support this via the
> stream.SetPriority(int
> order) API as used in the HTTP Priority
> <https://datatracker.ietf.org/doc/html/rfc9114> header.


There is not just one QUIC Library. Different browsers and different 
server stacks use different QUIC libraries, with their own 
implementation choices. See for example R. Marx et al, "Same Standards, 
Different Decisions: A Study of QUIC and HTTP/3 Implementation 
Diversity", which shows how some stack deliver streams in sequence if 
stream creation, while other deliver them using round robin logic. 
https://qlog.edm.uhasselt.be/epiq/files/QUICImplementationDiversity_Marx_final_11jun2020.pdf

The June 2020 study is already dated. Since that, many stacks -- but not 
all -- have implemented support for the priorities defined in RFC9114. 
The priority API has two components, specifying both a priority level 
and a scheduling behavior. Within a QUIC connection, streams will higher 
priority will be scheduled before streams of lower priority.

Streams of the same priority can be declared as "incremental" or not. 
For example, images that support "progressive rendering" will be sent in 
an incremental faction, so the all images in a web page are rendered in 
parallel. QUIC stacks that implement an API compatible with RFC9114 
typically translate the "incremental" requirement by processing stream 
of the same priority level as Round Robin if incremental is set, and 
FIFO if it is not set.

The recently submitted transport draft 
(https://datatracker.ietf.org/doc/draft-nandakumar-moq-transport/) 
provides example of using these priorities to implement different 
transport strategy, such as combining priorities and FIFO to implement 
"one stream per object" strategies, or combining priorities and Round 
Robin to implement "one stream for all objects of a given priority 
object in a group".

These two example were specifically designed with bundling in mind. Of 
the two examples, the "stream per group and priority" supports bundling 
best, because the round robin scheduling will naturally allocate 
resource in a fair way to different tracks. The "stream per object" 
strategy is more fragile, as it requires the application to do its own 
"poor man round robin" by interleaving the creation of streams for 
different tracks.

Note that the transport draft specifies using priorities, instead of a 
delivery order. I understand how delivery order could work within a 
group, but I don't believe the concept works in a bundle of tracks as 
the group delimitation is different for each track.

Also, if an application coordinates multiple sources, it is easy to 
impose coordinated priorities such as "audio before video" or "low def 
before high def", but I just don't see how the distributed sources could 
pre-compute a synchronized delivery order.

-- Christian Huitema