Re: [Hls-interest] LL-HLS: status-code expected in the response to the PRELOAD request

Roger Pantos <rpantos@apple.com> Tue, 25 August 2020 19:38 UTC

Return-Path: <rpantos@apple.com>
X-Original-To: hls-interest@ietfa.amsl.com
Delivered-To: hls-interest@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A25FC3A0954; Tue, 25 Aug 2020 12:38:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.091
X-Spam-Level:
X-Spam-Status: No, score=-0.091 tagged_above=-999 required=5 tests=[DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=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 6T6DpfUuNGd1; Tue, 25 Aug 2020 12:38:27 -0700 (PDT)
Received: from ma1-aaemail-dr-lapp02.apple.com (ma1-aaemail-dr-lapp02.apple.com [17.171.2.68]) (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 A62073A095E; Tue, 25 Aug 2020 12:38:27 -0700 (PDT)
Received: from pps.filterd (ma1-aaemail-dr-lapp02.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp02.apple.com (8.16.0.42/8.16.0.42) with SMTP id 07PJbaVd032997; Tue, 25 Aug 2020 12:38:26 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=EBqvv35OGuA2f5EfQ3WQkDz+UhT93MFhbTe3plFEaTw=; b=WfMPtbczKG04ZVJlUm8rCNe2FLoZRcuQs7X0NE7qx9jqxqHpmq04uqNuGdMieNJRzvFp D/C0QyJVj1PrH1OthP5d+0KCbRCw9FzOB2OsWHHNASSw/LN2O+1d2oY69k7GjEkn8OTq fUWqJ5BYCNWKp/QC9pQS8gl/9Uv7QbzRZvTYh/i6f7Eto/I62+KlSZNxk0bI3JOULqRw oTQomyf/B00Y6XHwBcOTFhnKegHVw9D/dwdYqMJNtG7GaJBXnY74nc5dXwtYQv14JZNe F1hTJJ+3RCkLMjjyEVGOKyc904K4//zCop/EdzxNj54RbUtI0eU7oA3m7Dlawp2LjbLY TA==
Received: from rn-mailsvcp-mta-lapp04.rno.apple.com (rn-mailsvcp-mta-lapp04.rno.apple.com [10.225.203.152]) by ma1-aaemail-dr-lapp02.apple.com with ESMTP id 33301ry8ew-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 25 Aug 2020 12:38:26 -0700
Received: from rn-mailsvcp-mmp-lapp03.rno.apple.com (rn-mailsvcp-mmp-lapp03.rno.apple.com [17.179.253.16]) by rn-mailsvcp-mta-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPS id <0QFM00F9QX7SZGG0@rn-mailsvcp-mta-lapp04.rno.apple.com>; Tue, 25 Aug 2020 12:38:16 -0700 (PDT)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp03.rno.apple.com by rn-mailsvcp-mmp-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) id <0QFM00D00WV0CK00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 25 Aug 2020 12:38:16 -0700 (PDT)
X-Va-A:
X-Va-T-CD: 81ca60fce39c2560b6c4a7e5841f9b8f
X-Va-E-CD: d7717d3ed5ffa743b607363abe9f35f6
X-Va-R-CD: 4b91e582f367bf8837880807a8b2216b
X-Va-CD: 0
X-Va-ID: cf9c6983-e0ee-423a-90ad-5e5183fb43fe
X-V-A:
X-V-T-CD: 81ca60fce39c2560b6c4a7e5841f9b8f
X-V-E-CD: d7717d3ed5ffa743b607363abe9f35f6
X-V-R-CD: 4b91e582f367bf8837880807a8b2216b
X-V-CD: 0
X-V-ID: d7f536a2-cd70-49ca-b8af-bbecc412cfa4
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-08-25_08:2020-08-25, 2020-08-25 signatures=0
Received: from localhost.localdomain ([17.234.66.164]) by rn-mailsvcp-mmp-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPSA id <0QFM0024HX7PEO10@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 25 Aug 2020 12:38:14 -0700 (PDT)
From: Roger Pantos <rpantos@apple.com>
Message-id: <A8982472-8411-4EFD-9B96-E60C953D8C34@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_66319512-C837-430D-A7C4-61C37BF79FAA"
MIME-version: 1.0 (Mac OS X Mail 14.0 \(3654.0.3.2.11\))
Date: Tue, 25 Aug 2020 12:38:13 -0700
In-reply-to: <067CFDC1-8333-4C4D-B2E7-68A9B7464E25@akamai.com>
Cc: "hls-interest@ietf.org" <hls-interest@ietf.org>
To: "Law, Will" <wilaw=40akamai.com@dmarc.ietf.org>
References: <05DC4355-8B2D-4A1F-A223-7B4E9DE1EF63@akamai.com> <47DC8FD2-685F-4816-A9D2-02214E96E3C0@apple.com> <067CFDC1-8333-4C4D-B2E7-68A9B7464E25@akamai.com>
X-Mailer: Apple Mail (2.3654.0.3.2.11)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-08-25_08:2020-08-25, 2020-08-25 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/3WFjz-DZVHnm6n0Jh23HPKB01qk>
Subject: Re: [Hls-interest] LL-HLS: status-code expected in the response to the PRELOAD request
X-BeenThere: hls-interest@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussions about HTTP Live Streaming \(HLS\)." <hls-interest.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/hls-interest/>
List-Post: <mailto:hls-interest@ietf.org>
List-Help: <mailto:hls-interest-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Aug 2020 19:38:31 -0000

Okay, I think that approach would work well enough. We’ll take a closer look at it once iOS 14 et al are in the can. Assuming it works out we can put a reference to that part of RFC 8673 into the EXT-X-PRELOAD-HINT section of the HLS spec. 

We can also update our clients to conform to that behavior, although it might take a while to land that in an iOS/macOS release.


Roger.

> On Aug 19, 2020, at 5:11 PM, Law, Will <wilaw=40akamai.com@dmarc.ietf.org> wrote:
> 
> @Roger – re “Note that when using H2 (or H3) that there is a fourth option, which is to return 206 and not supply any Content-Length header at all.”
> This is a good point however it still leaves open the question of what content-range header should be returned. Per the H2 spec (snippet below), the requirements of HTTP/1.1 Range Requests are carried forward under HTTP/2. These requirements RFC7233 state that the “the server generating the 206 response MUST generate a Content-Range header field,” and also that the byte-range must contain a last-byte-pos value and that a value of * can be used for an unknown total length of the object but it cannot be used for last-byte-pos. Since the last-byte-pos is not known in this case, we have the same problem with H2 that we have with H1.
>  
> The solution proposed by https://tools.ietf.org/html/rfc8673 <https://tools.ietf.org/html/rfc8673> would seem to work for H2 as well as it would for H1. Per this solution, the client should never make an open ended range request if it is expecting an aggregated response from a fixed offset. It should instead send a request with a very large number (9007199254740991 has been proposed in this thread) as the last-byte-pos in the range request. This would signal the server (or origin) to begin a response that starts at the requested offset and aggregates over time until the object is completely transferred.
> 
>  
> https://tools.ietf.org/html/rfc7540#section-8 <https://tools.ietf.org/html/rfc7540#section-8>
> 8. HTTP Message Exchanges
> HTTP/2 is intended to be as compatible as possible with current uses
> of HTTP. This means that, from the application perspective, the
> features of the protocol are largely unchanged. To achieve this, all
> request and response semantics are preserved, although the syntax of
> conveying those semantics has changed.
> Thus, the specification and requirements of HTTP/1.1 Semantics and
> Content [RFC7231], Conditional Requests [RFC7232], Range Requests
> [RFC7233], Caching [RFC7234], and Authentication [RFC7235] are
> applicable to HTTP/2.
>  
> -Will
>  
> From: Roger Pantos <rpantos=40apple.com@dmarc.ietf.org>
> Date: Wednesday, August 19, 2020 at 1:17 PM
> To: "hls-interest@ietf.org" <hls-interest@ietf.org>
> Subject: Re: [Hls-interest] LL-HLS: status-code expected in the response to the PRELOAD request
>  
>  
> 
> 
>> On Aug 17, 2020, at 4:30 PM, Law, Will <wilaw=40akamai.com@dmarc.ietf.org <mailto:wilaw=40akamai.com@dmarc.ietf.org>> wrote:
>>  
>> Hello
>>  
>> I am requesting a clarification on the expected server response status code when a client makes an open-ended range request against a media segment when playing back LL-HLS.  Consider the following media playlist snippet:
>>  
>> #EXTINF:4.000,
>> v1_1-7727.m4s
>> #EXT-X-PROGRAM-DATE-TIME:2020-07-28T17:37:48.771Z
>> #EXT-X-PART:DURATION=0.500,URI="v1_1-7728.m4s",BYTERANGE="64267@0",INDEPENDENT=YES
>> #EXT-X-PART:DURATION=0.500,URI="v1_1-7728.m4s",BYTERANGE="63033@64267"
>> #EXT-X-PART:DURATION=0.500,URI="v1_1-7728.m4s",BYTERANGE="57810@127300"
>> #EXT-X-PART:DURATION=0.500,URI="v1_1-7728.m4s",BYTERANGE="60558@185110"
>> #EXT-X-PART:DURATION=0.500,URI="v1_1-7728.m4s",BYTERANGE="68575@245668"
>> #EXT-X-PART:DURATION=0.500,URI="v1_1-7728.m4s",BYTERANGE="60880@314243"
>> #EXT-X-PRELOAD-HINT:TYPE=PART,URI="v1_1-7728.m4s",BYTERANGE-START=375123
>>  
>> To start-up, the client would issue 6 GET range-requests , starting at the independent part The server would respond with a 206 response for each and a content-range response header indicating the range being returned.
>>  
>> The next request would be for the PRELOAD-HINT part. This would be a GET request with a “range: 375123-“. The client is indicating it wants to receive this object starting at offset 375123 and continuing to the end of the segment.
>>  
>> How should the origin (or proxy server) respond to this PRELOAD request? Three possible options
>> It holds back any response until the end of segment, returning at that time a 206 response with a content-range of 375123 – T/T+1 (where represents total size of segment). This would ruin the low latency behavior for the client.
>> It starts an immediate response, signaling 206 with content-range: 375123 - */*. This is actually forbidden by the RFC’s, which indicate that the last-byte-pos cannot hold a value of “*”. 
>> It starts an immediate response, signaling a 200 response and if serving H1 to a proxy server which then serves H2 to the client, a "Transfer-Encoding: chunked" response header. 
>>  
>  
> Note that when using H2 (or H3) that there is a fourth option, which is to return 206 and not supply any Content-Length header at all. This (I believe) became the expected behavior when HTTP/2 removed support for chunked transfer encoding: https://httpwg.org/specs/rfc7540.html#HttpSequence <https://urldefense.proofpoint.com/v2/url?u=https-3A__httpwg.org_specs_rfc7540.html-23HttpSequence&d=DwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=KkevKJerDHRF9WRs8nW8Ew&m=R-IP9-Hj--z3sXAZZX9rokMs5qnnChNcbFO4PLft4_M&s=QsYGd9vU3GGNCIKQjBOnvGSnXVh73OH0Kyi1KcPWpDw&e=>
>  
>  
> Roger Pantos
> Apple Inc. 
> 
> 
>> Option [3] looks to be the most correct however it raises the question of  whether a 200 response (chunked-transfer or not) implies to the client that is has received the complete object i.e starting at offset 0 instead of offset 375123. As a CDN, we need to build a behavior that is robustly supported by all HTTP clients and not just a particular class of application. The proxy-server cannot tell if is serving a LL-HLS client or some other client, therefore we need a consistent behavior when it is asked for an open-ended range request against an object of unknown size.
>>  
>> So the questions are:
>> Is a 200 status-code expected in the response to the PRELOAD request?
>> If so, are there other clients or applications on the internet that would break if we did so for all open-ended range requests against objects of unknown size (outside of the application space of LL-HLS)?
>>  
>> Cheers
>> Will
>>  
>>  
>>  
>> -- 
>> Hls-interest mailing list
>> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
>> https://www.ietf.org/mailman/listinfo/hls-interest <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_hls-2Dinterest&d=DwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=KkevKJerDHRF9WRs8nW8Ew&m=R-IP9-Hj--z3sXAZZX9rokMs5qnnChNcbFO4PLft4_M&s=Yv0CtXmSurk_NBFYprpu4mN6giQ1RFARMSK8zxyR6Rg&e=>
> 
> 
> -- 
> Hls-interest mailing list
> Hls-interest@ietf.org
> https://www.ietf.org/mailman/listinfo/hls-interest