Re: Specifying Range in Link preload header for HTTP/2 Push?

Roger Pantos <rpantos@apple.com> Wed, 10 July 2019 01:08 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F3FF51200F6 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 9 Jul 2019 18:08:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.752
X-Spam-Level:
X-Spam-Status: No, score=-2.752 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
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 uXWbkJPUXsBC for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 9 Jul 2019 18:08:27 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [IPv6:2603:400a:ffff:804:801e:34:0:38]) (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 A6554120048 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Tue, 9 Jul 2019 18:08:27 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.89) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1hl14M-00045L-Dn for ietf-http-wg-dist@listhub.w3.org; Wed, 10 Jul 2019 01:06:50 +0000
Resent-Date: Wed, 10 Jul 2019 01:06:50 +0000
Resent-Message-Id: <E1hl14M-00045L-Dn@frink.w3.org>
Received: from titan.w3.org ([2603:400a:ffff:804:801e:34:0:4c]) by frink.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <rpantos@apple.com>) id 1hl14K-00044U-QL for ietf-http-wg@listhub.w3.org; Wed, 10 Jul 2019 01:06:48 +0000
Received: from nwk-aaemail-lapp01.apple.com ([17.151.62.66]) by titan.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <rpantos@apple.com>) id 1hl14I-0001jZ-Co for ietf-http-wg@w3.org; Wed, 10 Jul 2019 01:06:48 +0000
Received: from pps.filterd (nwk-aaemail-lapp01.apple.com [127.0.0.1]) by nwk-aaemail-lapp01.apple.com (8.16.0.27/8.16.0.27) with SMTP id x6A0vOIC029491; Tue, 9 Jul 2019 18:06:24 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=sender : content-type : mime-version : subject : from : in-reply-to : date : cc : message-id : references : to; s=20180706; bh=BZGplseoHW+G7IxzGK4UH0DZNoVNecHPRp2oO1AT2+k=; b=f7AXbmR9h1Dx2Ct1mekVrNJn2DlpLWp4Tm7z5ljMKYgOc4rv0euOX3qKdjdcEU2E12i3 tRl7htRX6gLPJHCSkZ+4zG5/g/oZZ1E3CoRgINi5y+vU2xHBXhUtVBVpuxub/vYFmRfz r0BgQ0gCXreCJ/SNY5dCyi/1Lfq9SN2sz3kT+KwwubxQesHLBjn9AK0KfKhHk7cAf/De Y1iS67efee7RjeaTEqu4P0XLyCEMjNdPgBN1K/cJ8l6m5jWJZfqZhoM/9zctEWgijIuP /h2Tc1Ulft6MAA7t2ErHKyPt3X7+IwmbX96ljWonD35IWOL83Raq9ag9xmJM2O0LLoxq Kg==
Received: from ma1-mtap-s03.corp.apple.com (ma1-mtap-s03.corp.apple.com [17.40.76.7]) by nwk-aaemail-lapp01.apple.com with ESMTP id 2tjtk30ute-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 09 Jul 2019 18:06:24 -0700
Received: from nwk-mmpp-sz10.apple.com (nwk-mmpp-sz10.apple.com [17.128.115.122]) by ma1-mtap-s03.corp.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPS id <0PUE00G9UJ2L3U30@ma1-mtap-s03.corp.apple.com>; Tue, 09 Jul 2019 18:06:22 -0700 (PDT)
Received: from process_milters-daemon.nwk-mmpp-sz10.apple.com by nwk-mmpp-sz10.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) id <0PUE00800ICQ4000@nwk-mmpp-sz10.apple.com>; Tue, 09 Jul 2019 18:06:21 -0700 (PDT)
X-Va-A:
X-Va-T-CD: ee9e587bd449ec3c8e9d2f18105080c7
X-Va-E-CD: ebec9d363cb3e9032b1aa455ca769df0
X-Va-R-CD: c7d42333b7d05fd8c8092e8412552c6e
X-Va-CD: 0
X-Va-ID: 24742810-5303-492e-8516-108c490b66c8
X-V-A:
X-V-T-CD: ee9e587bd449ec3c8e9d2f18105080c7
X-V-E-CD: ebec9d363cb3e9032b1aa455ca769df0
X-V-R-CD: c7d42333b7d05fd8c8092e8412552c6e
X-V-CD: 0
X-V-ID: db12a08c-925c-4e62-8850-4ec72c91e5c0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-07-10_01:,, signatures=0
Received: from [17.234.72.98] (unknown [17.234.72.98]) by nwk-mmpp-sz10.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPSA id <0PUE0073AJ1U0G40@nwk-mmpp-sz10.apple.com>; Tue, 09 Jul 2019 18:05:58 -0700 (PDT)
Sender: rpantos@apple.com
Content-type: multipart/alternative; boundary="Apple-Mail=_7A6BB7EB-CEB4-42FA-B5C1-3785E1D955C7"
MIME-version: 1.0 (Mac OS X Mail 13.0 \(3566\))
From: Roger Pantos <rpantos@apple.com>
In-reply-to: <CALGR9oaNnSKp-a8tj+7ojc_g+AhJQ4jF5Z738mjhXhoesfYqLg@mail.gmail.com>
Date: Tue, 09 Jul 2019 18:05:54 -0700
Cc: HTTP Working Group <ietf-http-wg@w3.org>
Message-id: <CC99D5CA-1C8B-4200-A6D4-059ABCD6DBA8@apple.com>
References: <63CAE7E1-34E9-42DA-A7DD-1E17223032AE@apple.com> <CALGR9oaNnSKp-a8tj+7ojc_g+AhJQ4jF5Z738mjhXhoesfYqLg@mail.gmail.com>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
X-Mailer: Apple Mail (2.3566)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-07-10_01:, , signatures=0
Received-SPF: pass client-ip=17.151.62.66; envelope-from=rpantos@apple.com; helo=nwk-aaemail-lapp01.apple.com
X-W3C-Hub-Spam-Status: No, score=-4.1
X-W3C-Hub-Spam-Report: AWL=-0.001, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: titan.w3.org 1hl14I-0001jZ-Co 3418f5c9a32abe98285723517c100c18
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Specifying Range in Link preload header for HTTP/2 Push?
Archived-At: <https://www.w3.org/mid/CC99D5CA-1C8B-4200-A6D4-059ABCD6DBA8@apple.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/36778
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>


> On Jul 9, 2019, at 4:03 PM, Lucas Pardue <lucaspardue.24.7@gmail.com> wrote:
> 
> Hi Roger,
> 
> On Tue, 9 Jul 2019, 21:36 Roger Pantos, <rpantos@apple.com <mailto:rpantos@apple.com>> wrote:
> Greetings HTTP experts,
> 
> I’m interested in employing HTTP/2 Push of Range requests for media streaming. It seems like the core h2 protocol handles this well enough; the PUSH_PROMISE can contain a Range header, and at the very least if that ends up in the client push cache then a request for that exact Range should match.
> 
> That being said, I’d also like to signal the push request to downstream HTTP caches. Push is typically signaled via the Link header with rel=preload, but https://www.w3.org/TR/preload/ <https://www.w3.org/TR/preload/> doesn’t seem to define signaling and associated Range.
> 
> Has anyone defined a Link extension to signal an associated Range?
> 
> I've spoken informally to some people on related topics. I presume this is related to Apple's LHLS? Or in lay speak, one approach to low-latency HTTP-based streaming. It'd be great to have a reference to cite when talking around the topic.

That’s right. Here’s a link to the current white paper: https://developer.apple.com/documentation/http_live_streaming/protocol_extension_for_low-latency_hls_preliminary_specification

>  
> If not, would anyone object to the following Link extension?
> 
> range-link-extension = “range” = ranges-specifier
> 
> where ranges-specifier is defined in RFC 2616.
> 
> An example would be:
> 
> Link: </media.mp4>; rel=preload; as=video; type=video/mp4; range=1380-14226
> 
> 
> thanks,
> 
> Roger Pantos
> Apple Inc.
> 
> The general impression I've observed is that such a range signal in Link would be useful to a number of services, and that there would be benefit in adopting a common signal.
> 
> Furthermore, while the use of server push might have debatable benefits for the web browsing use case. I'm led to believe that it has affirmative uses in this streaming model. Again, some evidential data would be really interesting. 

The use of Push in our LL-HLS design eliminates one round trip per (partial) media segment downloaded. We’ve got data that shows round trip times to media servers can exceed 100 (or even 200) ms, particularly on cellular networks, even in the U.S. 

When playing at very low delay-from-live (2s or less), the client can only buffer around 1s ahead of the playhead (because that’s all there is). New segments must be loaded in a timely fashion to prevent playback from stalling. Speeding that up by 10% of the overall budget is a significant win. 

In addition, keeping the TCP send pipe full improves lost-packet recovery performance of the primary resource that accompanies the push (via fast retransmit).

> 
> Finally, server push and caching is an interesting area that might benefit from some more information. Some of the WG might be interested in how this gets implemented in your use case.

Certainly. I’d be happy to answer as I’m able to.

If there’s nothing currently defined, what would be the next step? To write an Internet-Draft specifying the Link extension?

(I’m also interested in a way for a server to indicate that pushed resources are to be strictly ordered (such as via a dependency tree). Today, multiple pushes get multiplexed at the default priority. But that’s a different discussion.)


Roger.

> 
> Cheers
> Lucas