Re: [Hls-interest] HLS Content Steering v1.0b1 preliminary specification

Roger Pantos <rpantos@apple.com> Sat, 20 February 2021 16:19 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 9CF363A0FF2 for <hls-interest@ietfa.amsl.com>; Sat, 20 Feb 2021 08:19:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.659
X-Spam-Level:
X-Spam-Status: No, score=-2.659 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.57, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_REMOTE_IMAGE=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 vVf2o3yYkJOn for <hls-interest@ietfa.amsl.com>; Sat, 20 Feb 2021 08:19:39 -0800 (PST)
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 95D143A1014 for <hls-interest@ietf.org>; Sat, 20 Feb 2021 08:19:39 -0800 (PST)
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 11KGHke4050980; Sat, 20 Feb 2021 08:19:38 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=content-type : content-transfer-encoding : from : mime-version : subject : date : message-id : references : cc : in-reply-to : to; s=20180706; bh=ckCbS6SuwRERAR6HhC45J3ZcH4se1Eu/uzbL8Q9aI+g=; b=UedDGV5vUO5TLMDFAENTBQLJ/qi74sDHK0z1Z06WhC2af7zmYilnWfIi496dCNfZBxG4 JbaCRWnA9p26QJnViH7xHY83G89FSl/lBFfttTgFZUhJzdfbc/Eu7jZGJkr7x4qLBBff pJZw1SM922r9Nm9Z4gj94H0ZS5mvtU/7SjxZEy0lGLY6Kb6eJVa17NmkWjbu7EzgwqiZ 5oMvD+1y5NOS4u1nm6mACrd+0j4VXuK9oWtGt0be2efRov3oTh1h98aX2RO/8qt9aVvk u4xhquxQ63K2JU7HKObnat9fl3AOpZsYoPAkR2Y8jSJCEqHVFKZcp7SbnJT0/XiQgk/Y NQ==
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 36tyyuuccj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Sat, 20 Feb 2021 08:19:38 -0800
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.7.20201203 64bit (built Dec 3 2020)) with ESMTPS id <0QOU00ACO5CP3K60@rn-mailsvcp-mta-lapp04.rno.apple.com>; Sat, 20 Feb 2021 08:19:37 -0800 (PST)
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.7.20201203 64bit (built Dec 3 2020)) id <0QOU00S0051UVD00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Sat, 20 Feb 2021 08:19:37 -0800 (PST)
X-Va-A:
X-Va-T-CD: 363ce4028796a5d0ac470b3a48c24dcf
X-Va-E-CD: 4335616a6ac305163c7e0e056e870746
X-Va-R-CD: 3fe25e5da9104b0db2fa21b8031c261a
X-Va-CD: 0
X-Va-ID: 76d7843a-acc1-4934-8ffc-f1241d74d764
X-V-A:
X-V-T-CD: 363ce4028796a5d0ac470b3a48c24dcf
X-V-E-CD: 4335616a6ac305163c7e0e056e870746
X-V-R-CD: 3fe25e5da9104b0db2fa21b8031c261a
X-V-CD: 0
X-V-ID: 47b52cb9-3ca5-4a62-a4a8-e9b64bea9ee5
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-02-20_02:2021-02-18, 2021-02-20 signatures=0
Received: from smtpclient.apple (unknown [10.104.47.212]) by rn-mailsvcp-mmp-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.7.20201203 64bit (built Dec 3 2020)) with ESMTPSA id <0QOU001255COBQ00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Sat, 20 Feb 2021 08:19:37 -0800 (PST)
Content-type: multipart/alternative; boundary="Apple-Mail-72E292A9-8A30-412B-9469-A9067EEF490B"
Content-transfer-encoding: 7bit
From: Roger Pantos <rpantos@apple.com>
MIME-version: 1.0 (1.0)
Date: Sat, 20 Feb 2021 08:19:35 -0800
Message-id: <D6C46DFE-4563-4D20-955E-AAB34F14E4CA@apple.com>
References: <CAAqSTp=Z-GHYtA_8iPvzb0Rw1rUPrS2yHGGwE27hrOt_58YHwA@mail.gmail.com>
Cc: hls-interest@ietf.org, http-live-streaming-review <http-live-streaming-review@group.apple.com>
In-reply-to: <CAAqSTp=Z-GHYtA_8iPvzb0Rw1rUPrS2yHGGwE27hrOt_58YHwA@mail.gmail.com>
To: Pieter-Jan Speelmans <pieter-jan.speelmans@theoplayer.com>
X-Mailer: iPhone Mail (18E154)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-02-20_02:2021-02-18, 2021-02-20 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/q1jFNE56U-dBPqYTKL6EUWdjRv0>
Subject: Re: [Hls-interest] HLS Content Steering v1.0b1 preliminary specification
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: Sat, 20 Feb 2021 16:19:43 -0000

I don’t the idea of burdening the client with a lot of complicated regex responsibilities. 

We’ve discussed adding SUFFIX or maybe some kind of query parameter override mechanism to the template. But before moving forward with that I’d want to hear some actual content providers coming forward to say that they’d use it. 

Roger
Sent from my iPhone. 

> On Feb 20, 2021, at 1:10 AM, Pieter-Jan Speelmans <pieter-jan.speelmans@theoplayer.com> wrote:
> 
> 
> Hi Roger
> 
> One downside I see with this approach is the authentication tokens which would be harder to replace for specific CDNs.
> This could be resolved by making the PREFIX attribute a PATTERN containing a regular expression instead. While very flexible, it would make things slightly more complicated. 
> Also, what if CDN1 does not need an authentication token, but CDN2 does. In that case, you might need to simply append rather than replace the token.
> Another case would be if you would use relative paths, it could require a prepend, and again only for CDN paths other than the current.
> 
> I do like the flexibility EXT-X-DEFINE gives. There could be an intermediate solution where you use the EXT-X-STEERING with a PREPEND, APPEND and FIND (and REPLACE) where the value could be a parameter as defined in EXT-X-DEFINE.
> In practice, it could look like this:
> 
> #EXT-X-STREAM-INF:BANDWIDTH=200000,STEERING=“1”
> https://a.example.com/video/mid/index.m3u8
> 
> #EXT-X-STREAM-INF:BANDWIDTH=400000,STEERING=“1”
> https://a.example.com/video/high/index.m3u8
> 
> #EXT-X-STEERING-TEMPLATE:ID=“1”,FIND="https://a.example.com/video”,REPLACE="DOMAIN",APPEND="AUTH"
> 
> With a steering manifest amongst the lines of
> {
> 
>   "TTL": 300,
>   "RELOAD-URI": "https://example.com/steering?video=00001&session=123",
>   "PATHWAYS": [
>     {
>       "ID": "My-Great-CDN",
>       "VALUES": {
>         "DOMAIN": "example.com",
>         "AUTH": ""
>       }
>     },
>     {
>       "ID": "My-Backup-CDN",
>       "VALUES": {
>         "DOMAIN": "backup.example.com",
>         "AUTH": "?auth=456"
>       }
>     }
>   ]
> }
> 
> It could give a "best of both worlds" where a variable could be filled in through the original mechanism, but basically filling in a "default" value for the variables. The case which could still remain tricky is the authentication tokens, or if you have the authentication token in the URI path, meaning you need to do 2 replaces (you could allow multiple templates, but then it becomes hard again as you won't know which takes precedence).
> 
> Best regards,
> Pieter-Jan
> 
> 
> 
> Pieter-Jan Speelmans
> CTO
> 
> THEO Technologies NV
> w | www.theoplayer.com
> Philipssite 5, Bus 1. 3001 Leuven, Belgium
> 
> Leuven (Belgium) - New York (US) - Singapore (SG) - Barcelona (ES)
> BTW: BE 0847.829.290, RPR: Leuven
> 
> 
>> On Sat, Feb 20, 2021 at 4:07 AM Roger Pantos <rpantos@apple.com> wrote:
>> 
>> 
>>> On Feb 17, 2021, at 1:46 PM, Pieter-Jan Speelmans <pieter-jan.speelmans@theoplayer.com> wrote:
>>> 
>>> Hi all
>>> 
>>> I am pretty concerned about the backwards compatibility problems when attempting to use this in combination with older devices. It will force services to either provide two playlists, one with and one without EXT-X-DEFINE with client-side detection of the maximum version supported by the client. While this will not be an issue for up to date Apple devices, this will definitely be an issue for out of date devices but also most smart TVs, Chromecasts, Airplay implementations by those other than Apple (f.e. on LG), ...
>> 
>> Well, we’re still early enough that we could consider changing the format. I’m not particularly moved by the hardship of supporting EXT-X-DEFINE — anybody who is implementing content steering is going to have to do at least that much work in their m3u8 parsing anyway — but I acknowledge that requiring content vendors to provide a different master playlists for old, un-updated clients is a non-trivial burden.
>> 
>> What if we took the following approach instead?
>> 
>> First, add a new STEERING attribute to regular EXT-X-STREAM and MEDIA tags:
>> 
>> #EXT-X-STREAM-INF:BANDWIDTH=200000,STEERING=“1”
>> https://a.example.com/video/mid/index.m3u8
>> 
>> #EXT-X-STREAM-INF:BANDWIDTH=400000,STEERING=“1”
>> https://a.example.com/video/high/index.m3u8
>> 
>> This links the variants (and renditions) to a steering template definition:
>> 
>> #EXT-X-STEERING-TEMPLATE:ID=“1”,PREFIX="https://a.example.com/video”
>> 
>> #EXT-X-CONTENT-STEERING:SERVER-URI="/steering?video=00001",PATHWAY-ID="My-Great-CDN"
>> 
>> The manifest would change a bit:
>> 
>> {
>>    "VERSION": 0
>>    "TTL": 300,
>>    "RELOAD-URI": "https://example.com/steering?video=00001&session=123",
>>    "PATHWAYS": [
>>        {
>> 		"ID": "My-Great-CDN",
>> 		"TEMPLATES": {
>> 		   "1" : { 
>> 			“PREFIX”: "https://a.example.com/video" 
>> 		   }
>> 		}
>>        },
>>        {
>> 		"ID": "My-Backup-CDN",
>> 		"TEMPLATES": {
>> 		   "1" : { 
>> 			“PREFIX”: "https://b.example.com/backup-video" 
>> 		   }
>> 		}
>>        }
>>    ]
>> }
>> 
>> The client would load and play the master playlist as usual. When it parsed the EXT-X-STREAM-INF and EXT-X-MEDIA tags it would see the STEERING attribute and verify that there is a corresponding EXT-X-STEERING-TEMPLATE and that the PREFIX of the steering template matches the start of the URI (fatal error if either check fails). It would store away the remainder of the URI as the “steerable part.”
>> 
>> When it loaded the manifest it would check that each pathway had an object in its TEMPLATES object for each STEERING-TEMPLATE (matching the key to the ID). (If it did not, steering would be disabled.)
>> 
>> To switch pathways it would concatenate the PREFIX from the TEMPLATES object with the steerable part of each URI. After that, everything would behave the same way.
>> 
>> This approach isn’t as flexible as general variable substitution. But I think that it would still cover the majority of the substitution use cases (and I’d be interested to hear about those that it doesn’t).
>> 
>> 
>> Roger.
>> 
>>> 
>>> My personal opinion is that the value of backwards compatibility would warrant the drawbacks I currently see. 
>>> 
>>> Best regards,
>>> Pieter-Jan
>>> 
>>> 
>>> Pieter-Jan Speelmans
>>> CTO
>>> 
>>> THEO Technologies NV
>>> w | www.theoplayer.com
>>> Philipssite 5, Bus 1. 3001 Leuven, Belgium
>>> 
>>> Leuven (Belgium) - New York (US) - Singapore (SG) - Barcelona (ES)
>>> BTW: BE 0847.829.290, RPR: Leuven
>>> 
>>> 
>>>> On Wed, Feb 17, 2021 at 9:57 PM Roger Pantos <rpantos=40apple.com@dmarc.ietf.org> wrote:
>>>> Hello hls-interest,
>>>> 
>>>> As discussed on the call today, here is the preliminary specification for the new Content Steering feature. We are converging on the final design for 1.0, so please take a look at it when you can and tell us what you think. 
>>>> 
>>>> You can send feedback to this list, or to http-live-streaming-review@group.apple.com if you want it to go directly to us.
>>>> 
>>>> 
>>>> 
>>>> 
>>>> regards,
>>>> 
>>>> Roger Pantos
>>>> Apple Inc.-- 
>>>> Hls-interest mailing list
>>>> Hls-interest@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/hls-interest
>>> 
>>> Legal Notice 
>>> You can find the latest terms and policies of THEO Technologies under www.theoplayer.com/terms including our "GENERAL TERMS AND CONDITIONS". In the absence of a signed agreement between you and THEO Technologies, by replying to this email these terms apply to the relevant transaction between us.   
>>> The contents of this email message and any attachments are intended solely for the addressee(s) and contain CONFIDENTIAL and/or privileged information and are legally protected from disclosure. If you are not the intended recipient of this message, please immediately alert the sender by reply email and then delete this message including any attachments and you are hereby notified that any use, dissemination, copying, or storage of this message or its attachments is strictly prohibited. 
>>> Full security of emails over the internet cannot be ensured. Despite our efforts it is your responsibility to provide for your protection.
>>> Global HQ: THEO Technologies NV, Philipssite 5 bus 1, 3001 Heverlee, Belgium - BE 0847.829.290 - CEO: Steven Tielemans
>> 
> 
> Legal Notice 
> You can find the latest terms and policies of THEO Technologies under www.theoplayer.com/terms including our "GENERAL TERMS AND CONDITIONS". In the absence of a signed agreement between you and THEO Technologies, by replying to this email these terms apply to the relevant transaction between us.   
> The contents of this email message and any attachments are intended solely for the addressee(s) and contain CONFIDENTIAL and/or privileged information and are legally protected from disclosure. If you are not the intended recipient of this message, please immediately alert the sender by reply email and then delete this message including any attachments and you are hereby notified that any use, dissemination, copying, or storage of this message or its attachments is strictly prohibited. 
> Full security of emails over the internet cannot be ensured. Despite our efforts it is your responsibility to provide for your protection.
> Global HQ: THEO Technologies NV, Philipssite 5 bus 1, 3001 Heverlee, Belgium - BE 0847.829.290 - CEO: Steven Tielemans