Re: [Moq] Exploring HTTP/3
Christian Huitema <huitema@huitema.net> Thu, 09 February 2023 21:49 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 B7726C16950E for <moq@ietfa.amsl.com>; Thu, 9 Feb 2023 13:49:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.9
X-Spam-Level:
X-Spam-Status: No, score=-6.9 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] 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 v15uOJwjQOda for <moq@ietfa.amsl.com>; Thu, 9 Feb 2023 13:49:00 -0800 (PST)
Received: from mx36-out21.antispamcloud.com (mx36-out21.antispamcloud.com [209.126.121.69]) (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 39067C16950D for <moq@ietf.org>; Thu, 9 Feb 2023 13:48:59 -0800 (PST)
Received: from xse32.mail2web.com ([66.113.196.32] helo=xse.mail2web.com) by mx193.antispamcloud.com with esmtp (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1pQEmj-000Lej-J5 for moq@ietf.org; Thu, 09 Feb 2023 22:48:58 +0100
Received: from xsmtp22.mail2web.com (unknown [10.100.68.61]) by xse.mail2web.com (Postfix) with ESMTPS id 4PCVqk6YJzz9dN for <moq@ietf.org>; Thu, 9 Feb 2023 13:48:50 -0800 (PST)
Received: from [10.5.2.17] (helo=xmail07.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 1pQEmg-0004BP-Oi for moq@ietf.org; Thu, 09 Feb 2023 13:48:50 -0800
Received: (qmail 16104 invoked from network); 9 Feb 2023 21:48:50 -0000
Received: from unknown (HELO [192.168.1.104]) (Authenticated-user:_huitema@huitema.net@[172.58.46.183]) (envelope-sender <huitema@huitema.net>) by xmail07.myhosting.com (qmail-ldap-1.03) with ESMTPA for <kixelated@gmail.com>; 9 Feb 2023 21:48:49 -0000
Message-ID: <56e90e9a-875d-3dbb-4fe8-17511b0ea513@huitema.net>
Date: Thu, 09 Feb 2023 13:48:49 -0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1
Content-Language: en-US
To: Luke Curley <kixelated@gmail.com>, Bernard Aboba <bernard.aboba@gmail.com>
Cc: Lucas Pardue <lucaspardue.24.7@gmail.com>, MOQ Mailing List <moq@ietf.org>, Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>
References: <CAHVo=ZmD7KvKxh2tTeaM2B+0q9=qZPgBydmfaHor5MaPODZf6w@mail.gmail.com> <CALGR9oas8cMBrX1WVf64fH13jr1r-S0KQB5spNzFj41k9Lgk+A@mail.gmail.com> <CAHVo=Z=Nov7B24A=M2pxPnUgyBg3n-AjF8AD2mKwgbTQ81F+mA@mail.gmail.com> <CALGR9ob4i7Z8zuqFVHtzOGV3QMTFjvOK4uZW3Xfvb5ZsoULvMg@mail.gmail.com> <CAKKJt-eC=h20Va4+64r=zkhYXK_ypC+txLqzgpr+YL=HW-DD+g@mail.gmail.com> <CALGR9oYr2OZZcfmFdqLgQ0Uqu7pAwQTnbuf-Fm64m58Spe6xYw@mail.gmail.com> <CAHVo=ZmeJfdoLc9NatDDEeAQG0X9_aygQm0ZSdtzeKEu=bO2pw@mail.gmail.com> <CAOW+2dsgewEtqnT0i=drp5dRDvDtMyKyojEn0sp7Htx6SOJ3Uw@mail.gmail.com> <CAHVo=ZmX45czku9upiP2iR15Re4TKM+43bd6gqb5bKmC0heARw@mail.gmail.com> <CAHVo=ZkLcDq3ZjwkQyK_1EkzwQ20VNB8xCSMhfrGiZpM3M3P+w@mail.gmail.com>
From: Christian Huitema <huitema@huitema.net>
In-Reply-To: <CAHVo=ZkLcDq3ZjwkQyK_1EkzwQ20VNB8xCSMhfrGiZpM3M3P+w@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Originating-IP: 66.113.196.32
X-Spampanel-Domain: xsmtpout.mail2web.com
X-Spampanel-Username: 66.113.196.0/24
Authentication-Results: antispamcloud.com; auth=pass smtp.auth=66.113.196.0/24@xsmtpout.mail2web.com
X-Spampanel-Outgoing-Class: unsure
X-Spampanel-Outgoing-Evidence: Combined (0.26)
X-Recommended-Action: accept
X-Filter-ID: Pt3MvcO5N4iKaDQ5O6lkdGlMVN6RH8bjRMzItlySaT/z7t/VrrAb1x8BDUzLNr/mPUtbdvnXkggZ 3YnVId/Y5jcf0yeVQAvfjHznO7+bT5xu6w3L23EOleH9nr/v5kMyj3CSdYahsEhiizd3WfZtEVXS MtNVkOxG5jQFlC/9ZH7lYLLlWSy3OGfGBNeqx2anHyJxjDLo4/ugN15VVJm4KWrxEaaKeSxe0Wrx 6M4G5/Wm4Zd53xWOh54QqC5fJ2uRSAdGCUogkno5AQIGNFML7Vxh7hoyMoWHMkqYfQEaAmuHQ5nV AknEAgtZ6Cw/EnQMpbt3W3gfNnuKkqGP09ZKLP25Cgscc2Nqd9azmDa4ZbYxn04qRLKGrOrEzQDq o2Fe5e0H1p2YD3fIDgqE3F/hSENKwnAR2oVisY+bnEqWCKi5klmK1va3wJScg92pg//jdNpXP/ul EV6DIUDLc0Yd6iTlYE+Zcn8p1rPpG64P1y7nVrUQfxkYoV3jt7fqlPgR+jdIhbfj7vAUd+Fv1cEH clnsyWu8Q0HDoORE+fy5gr3LgKffTIgl7nuGO/IJU1342OUMeHyTpNN0eXybX/w7/4a+Zyc1sUYl ckMDbruAhxeQ6YVfgO0a4JVaOBOIyooBqdTLpiPTvFXqR3IHqv+F4ldu5CfwdJ7GoUl41qhrEzJn USj88Y274Ahle4XzvMMK1HWkJ4378W9M+XYQPT7PkTsNcXMGA2O8jqHMH0k/M0LFFwtmK8QNyakB sz1lFzQCP6SvZYKBPSMu/Vw+BrHWccqGecEl4RH8+K//f+OBVl5rUF//64jep2wHMWOHDsw7w1wm qpiuZk2H1hKpnkNKkVz1pRXWhjh9fdbl44I0Df1a+rFGdSWKIZ2+kUl2bVrQROO91O5sDPDVxvxR OBcTN/pvYh0uagZStnuFnY/i67mnB//Q68Q4udZShZpcc2gs8iNAoBl8j+NxfqjWD0rlnGUVrBsP GnNiJ83AD/4JscB+Y40s9W2j+Lm5jObXX7mppbwTz3XA1470ltjtsSdD9ulNC4wc2LkM7XQE4YLV klMUXBrwDJBiqM7upi2Jdv71
X-Report-Abuse-To: spam@quarantine14.antispamcloud.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/MmU4BWff7TRZi7zhif7Gx2QNAoQ>
Subject: Re: [Moq] Exploring HTTP/3
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: Thu, 09 Feb 2023 21:49:04 -0000
If we are exploring HTTP-3, we might as well explore "MoQ directly over QUIC", such as opening a QUIC connection with an ALPN=MoQ.. But back the discussion. Luke is worried that if media streams are not sent over a single connection, then it becomes harder to implement relative priorities between media streams. Indeed, when I look at my implementation of QUIC, it is basically doing round-robin between connections. Changing that would not be simple. As for the way an MoQ node detects congestion, that tends to be implementation specific. In our prototype, we use the "just in time sending" of the Picoquic stack, which means the relay can assess at the time of sending the number of objects that have already arrived and have not yet been forwarded to the connection. That's working reasonably, and does not require diving into the internals of the congestion control algorithms. -- Christian Huitema On 2/9/2023 1:02 PM, Luke Curley wrote: > Sorry, that was probably too in-depth. I meant to reply to Bernard > saying that STOP_SENDING during congestion is not good enough. The > receiver has a limited view of the network and thus responds slowly or > incorrectly to congestion. The sender, on the other hand, has direct > access to both the queued data and the congestion window. > > On Thu, Feb 9, 2023 at 11:56 AM Luke Curley <kixelated@gmail.com > <mailto:kixelated@gmail.com>> wrote: > > If we assume the sender will round-robin, like is the case with > HLS/DASH, then the client has an unbelievably difficult task. > > > Let's suppose the client application is responsible for canceling > requests during congestion. The client has to decide if it should > cancel a pending request and/or it should make the next request. > > 1. The client doesn't know when data is buffered at the TCP/QUIC > layer, pending retransmission of a gap before the contents are > flushed to the application. > 2.The client doesn't know what data should be forthcoming. It needs > to make assumptions about how much jitter exists in the video system > (even b-frames) so it can predict when a timestamp should have arrived. > 3. The client can't determine where queuing occurs in the pipeline. > If the broadcaster is encountering congestion, that will appear like > last mile congestion to the client, so it will incorrectly cancel > the previous segment and degrade the experience. > 4. The client doesn't know if a segment will be transferred at > network speed (ex. advertisement on disk) or encoder speed (ex. live > stream). If the next segment is transferred at network speed, then > it will fight for bandwidth. > 5. The client doesn't know the congestion window. It doesn't know > how many simultaneous requests could be processed at once, similar > to how it doesn't know if it can switch to a higher rendition, > without just trying it. > 6. When the client decides to cancel a request, it takes at least > a round-trip to apply. > 7. When the client decides to make a new request, it takes at least > a round-trip to start receiving the content. > > All of these combined, a HLS/DASH client has a remarkably delayed > response to congestion. The slower the response to congestion, the > larger the jitter buffer required, and the higher the latency. It's > extremely difficult to build an optimal HLS/DASH client so most of > them (Twitch included) just download segments sequentially, > cancelling them only in extreme situations. This is a fundamental > latency wall on networks with congestion, and why Twitch is > replacing LHLS (basically LL-DASH) with Warp. > > > The idea behind delivery order (prioritization) is that the sender > has a much better view of the network, can make faster decisions, > and thus can achieve lower latency. The sender iterates over streams > in delivery order, creating STREAM frames when there's data in the > send buffer, until the congestion window is hit. It's effectively a > priority queue, and the end result is that any number of segments > can be transmitted in parallel without the need to cancel during > congestion. > > Something does need to annotate each segment with a delivery order. > It could be the viewer in the case of HTTP/3 Warp, or it could be > the broadcaster in the case of WebTransport Warp. The nice thing > about doing it at the broadcaster is that it's consistent throughout > multiple layers of relays, so the response to congestion is the same > regardless of the hop. One of the warts with HTTP/3 Warp I alluded > to earlier is that two viewers could request the same segment with > different delivery orders, and it's not clear to the CDN which one > it should use on a cache miss. > > > On Thu, Feb 9, 2023 at 10:18 AM Bernard Aboba > <bernard.aboba@gmail.com <mailto:bernard.aboba@gmail.com>> wrote: > > On Thu, Feb 9, 2023 at 09:56 Luke Curley <kixelated@gmail.com > <mailto:kixelated@gmail.com>> wrote: > > > For example, suppose a client issues a request for segment 5 > and segment 6, asking that the newer segment is delivered > first during congestion. > > If the two requests share a HTTP/3 or HTTP/2 connection, > then the HTTP server can prioritize. Any available bandwidth > under the congestion window is spent on STREAM frames for > segment 6 first. > > > [BA] Couldn’t this be accomplished without priority, by having > the receiver send a STOP_SENDING frame for segment 5, once it > became clear it was taking too long? > >
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Ali C. Begen
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Victor Vasiliev
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Ali C. Begen
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Ali C. Begen
- Re: [Moq] Exploring HTTP/3 Mark Nottingham
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Bernard Aboba
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Bernard Aboba
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Charles 'Buck' Krasic
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Christian Huitema
- Re: [Moq] Exploring HTTP/3 Victor Vasiliev
- Re: [Moq] Exploring HTTP/3 Suhas Nandakumar