Re: [CDNi] [E] Cache management interface | Triggers v2

"Mishra, Sanjay" <sanjay.mishra@verizon.com> Fri, 03 November 2023 09:12 UTC

Return-Path: <sanjay.mishra@verizon.com>
X-Original-To: cdni@ietfa.amsl.com
Delivered-To: cdni@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 861B7C15C2BE for <cdni@ietfa.amsl.com>; Fri, 3 Nov 2023 02:12:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.002
X-Spam-Level:
X-Spam-Status: No, score=-7.002 tagged_above=-999 required=5 tests=[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, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=verizon.com
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 AkBuUQq2EU6t for <cdni@ietfa.amsl.com>; Fri, 3 Nov 2023 02:11:58 -0700 (PDT)
Received: from mx0b-0024a201.pphosted.com (mx0b-0024a201.pphosted.com [148.163.153.92]) (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 3318AC15C2A7 for <cdni@ietf.org>; Fri, 3 Nov 2023 02:11:57 -0700 (PDT)
Received: from pps.filterd (m0127387.ppops.net [127.0.0.1]) by mx0a-0024a201.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3A2Lpwpm016599 for <cdni@ietf.org>; Fri, 3 Nov 2023 05:11:57 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=verizon.com; h=mime-version : references : in-reply-to : from : date : message-id : subject : to : cc : content-type; s=prodmail; bh=wU2Cmb8/Hlb0H/+k2ZJKiJhVMj3olAyhj35yB/2zh5c=; b=zjtW3r5WBm67TvUInl2zqPEd4LV35xvJbhPx+25XW7vMpemalqxlnCbqk/1GI2hd5Gn7 M8Hjq1HuA737JZIjBkAzbQTf9NHeAZVcZqgT0VYi15zjhDqzexDklSCmXATV+CJu6YBK vScDKtC724aBgo0QdnsYNU00np3pgv2/kQ9VhZid1nyg19oHt1tejwbyhzscT/pfDlVt Uz/LaWC0StQZ0SUcYRblDMhRUEUVcLIH7vkeToDog1/8QV3DPzyICCmRoklZn2K/oXUW YWiOlvUbvOFdt872jnsAU6rujsvKqcoE70wr4IMs6+sXfw57lj7ZtR2pLO/2HWQZhKGv +g==
Received: from mail-ua1-f71.google.com (mail-ua1-f71.google.com [209.85.222.71]) by mx0a-0024a201.pphosted.com (PPS) with ESMTPS id 3u3qp4x4kj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for <cdni@ietf.org>; Fri, 03 Nov 2023 05:11:55 -0400
Received: by mail-ua1-f71.google.com with SMTP id a1e0cc1a2514c-7ba7fb74544so634042241.3 for <cdni@ietf.org>; Fri, 03 Nov 2023 02:11:55 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699002714; x=1699607514; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wU2Cmb8/Hlb0H/+k2ZJKiJhVMj3olAyhj35yB/2zh5c=; b=gBOaoIWgpEtxcVPrAYD6DLCVsRyJJePRfc6t2LR4zsMgiCggx6QMQDCpgu+ipr9LFF oN3LxeLuMpXTwmcQtAR5F634ENyKECa5HpcOpAaMidTQzsri4GWJcRVeYWh8Layg3b9U 2l+6vLtgpQowxhyy5fbJDYNJrBtn9PAobaflv94J4l/fC0HyQCOcyzk51a7ZnV4AcFdm 2nMxv3ReVglM7uf8ztHbQOuPHILmwm8oAaCAF0Ccd/zNQVjw37UdR86QaJphRwNqcSuN TFJw7TTuOn5dlP0X9LijVrHAtI5O1SMF+pl5q4YFlFZ4XWZF8n4RBp8ntpMXiGVttzZK MQ8w==
X-Gm-Message-State: AOJu0Ywb+suJpH5na5uq6NjJPXZFwc/JSySXXk51HTNQgrTYZccLD+kb 45zUFyABi+d8CgGz0w7bNYqraReXpcBImkd8A0eAqv2h/2hrYzI4PChGr0CQ7evW0q37raYUMyg GZ03BGEhxoGCVHZW9xSBK51qPb60Pj5rKU9k=
X-Received: by 2002:a67:a20a:0:b0:45d:852c:3e9f with SMTP id l10-20020a67a20a000000b0045d852c3e9fmr2224570vse.8.1699002714209; Fri, 03 Nov 2023 02:11:54 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFOOdIDR2p1HzfrMKXoYWuCQMuGrbUASzR6hAeLQABq6+dJMhMYIOfiRKn/Cz0o/W/8tzjRMdnxRepzlInFFj0=
X-Received: by 2002:a67:a20a:0:b0:45d:852c:3e9f with SMTP id l10-20020a67a20a000000b0045d852c3e9fmr2224553vse.8.1699002713711; Fri, 03 Nov 2023 02:11:53 -0700 (PDT)
MIME-Version: 1.0
References: <F2A083C3-CD48-4D76-A27A-91F53717C99B@2you.io> <CA+EbDtAuzHP6MyGuotQn8jfRb+VAoFR6-4ai5KJVVq5Ef0DZeQ@mail.gmail.com> <CANv64+5ZzmZRDPxEKY4f5Xw6xvHdR+7tBd6RcNiJLEiPWmkffQ@mail.gmail.com>
In-Reply-To: <CANv64+5ZzmZRDPxEKY4f5Xw6xvHdR+7tBd6RcNiJLEiPWmkffQ@mail.gmail.com>
From: "Mishra, Sanjay" <sanjay.mishra@verizon.com>
Date: Fri, 03 Nov 2023 10:11:42 +0100
Message-ID: <CA+EbDtAJdG-_daui+5wzhTsP8-4O0_tFsmNAxQJqWts_+qnPTg@mail.gmail.com>
To: Alan Arolovitch <alan@2you.io>
Cc: cdni@ietf.org, Nir Sopher <nirsopher@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000394b3e06093be561"
X-mailroute: internal
X-Proofpoint-ORIG-GUID: _xCkyZ271SDLiJG-YQBWodfiipuGOA_9
X-Proofpoint-GUID: _xCkyZ271SDLiJG-YQBWodfiipuGOA_9
Archived-At: <https://mailarchive.ietf.org/arch/msg/cdni/JZIx1yDji2Ic1zFx7CzH7olBCJA>
Subject: Re: [CDNi] [E] Cache management interface | Triggers v2
X-BeenThere: cdni@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "This list is to discuss issues associated with the Interconnection of Content Delivery Networks \(CDNs\)" <cdni.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cdni>, <mailto:cdni-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cdni/>
List-Post: <mailto:cdni@ietf.org>
List-Help: <mailto:cdni-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cdni>, <mailto:cdni-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 03 Nov 2023 09:12:03 -0000

Hi Alan - Nir and discussed your comments and please see our further
clarifications to your comments


>>    1. For items 1 to 3 are new extensions you are proposing and those
>>    may be just easy to define in a new draft.
>>
>> Sounds good, I'll work on the draft once we finalize the cache management
> spec at SVTA.
>
>
>>    1. For #4, this appears a heavy lift in the current draft as some of
>>    the capabilities such as duration and recurrence and the RFC7265 brings
>>    added complexity for dCDN and some dCDN may not support. It may be best to
>>    leave Timepolicy as is defined in v2 but JCAL policy can be added in the
>>    new draft.
>>
>> I can see that JCAL/iCalendar support can be somewhat of a lift, even
> though there's a number of JCAL libraries out there.
> At the same time, the TimePolicy extension in its current form is a
> partial ad-hoc scheduling implementation, and should be obsoleted by
> RFC7265,
> which is a well-established IETF standard with implementation base.
> Do we want to release CI/T v2 that is obsolete at the time of release?
> [NS/SM] We do not think TimePolicy would be obsoleted. Let the dcdn
> choose what it supports and publish via the FCI (as already defined in the
> draft)
>


> If dCDN doesn't support some advanced JCAL scheduling features like
> recurrence, there's ample room to manage that using eextension error code
> in Error.V2
>
> [NS/SM] This should be managed by a capability object - such a solution
> would be cleaner and mor sustaninable than emitting an error, which is too
> late.
>
We support a capability object to specify which spec can be used with which
> extension. However, the usecase of complex extension is not covered by such
> a general capability.
>
We should probably need to define for JCAL (and every complex extension) an
> additional capability object specifying what part of JCAL it is supported.
> I think that both the new JCAL extension and its capability object should
> be pushed to a separate doc.
>
>>
>>    1.  Items 5 & 6 to generalize playlist to an object list is
>>    reasonable and we can add those in the next revision (v10) early Dec.
>>
>> Great, please let me know what is the best way to add those
> In the spirit of iterative changes, I propose to consider three minor
> features that may belong in the core CI/T v2 spec, rather than the cache
> management extension:
> - add trigger execution priority in Trigger.v2, to allow uCDN to introduce
> urgent triggers
> [NS/SM] While working on the different drafts, we already discussed
> capabilities that allows dependencies between triggers.
>
We concluded that any such capability can be simply defined and added as an
> extension, without forcing the dCDN to support it. We suggest to push it to
> a separate doc.
>


> - add an optional object list to Trigger Status v2; this is to show to
> uCDN how dCDN resolved playlist (aka objectlist) provided to it via
> conteMnt.playlist(objectlist) spec
> [NS/SM] makes sense, also for url patterns. However, wouldnt it
> dramatically enlarge the status object and make the transaction heavier?
>
Addiiotnally note that the extra complexity the dCDN would have to manage
> such a list, especially in a multiple CDN hierarcy topology (e.g. when the
> dCDN has 2 further dCDNs that may provide different replies)
>
Bottom line, we can add it to the respones structure, specifying that it
> should be included only if the "status request" specify so via a flag. However,
> due to the complexity and requirement for concise definitions, maybe to
> add such feature we should add it in a separate doc, with a designated API
> endpoint.
>


>
>
- add an optional object list to Error.v2
> [NS/SM] Again. It might be too heavy and complex.
>
A full description may create an [object * error * cdn-heirarchy] matrix,
> which may be too much.
>
Lets decide how to proceed after resolving which option we agree to take
> wrt the above (status object) question.
>


- update trigger spec objects that use URLs (which is all trigger specs
> except for CCID) to add a field that indicates the type of URL to use -
> published URL vs. cache key URL
>

> If we do that, we can have a clean break between the core CI/T v2 draft on
> hand, and 2 new drafts to be submitted later - cache management trigger
> extensions and
> cache management interface.
> Also, this would be a higher priority than adding JCAL support to v10.
>

[NS/SM] We see 2 options to support that, and need to think about it.
>
Let's take the below example:

    {
         "trigger-subject": "content",
         "generic-trigger-spec-type": "content-playlist",
         "generic-trigger-spec-value": {
             "playlist": "https://www.example.com/hls/title/index.m3u8
<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.example.com_hls_title_index.m3u8&d=DwMFaQ&c=udBTRvFvXC5Dhqg7UHpJlPps3mZ3LRxpb6__0PomBTQ&r=XniVbishGiO2Ao9hKqSc-hTVIWCi3T-x6GdHR4ZTgoM&m=971EsgFLP9ZLZjNqyHBn_eP79-nLrsreGAuMd4CdJ1bGkZZhLGpP43_nqnMc4Fh-&s=WNpDRf7l_aoJVrQzvMwJZXKtjzmEmn83XzqmqILOIaA&e=>",
             "media-protocol": "hls"
          }
       }



> Option A. We already have a "trigger-subject" proprety ("metadata" /
> "content"). Lets enrich the list of subjects to support the separation of
> URLs type, or add an additional field, e.g. 'trigger-subject-variant"
>

    {
         "trigger-subject": "content",

          "trigger-subject-variant": "published-url",

"generic-trigger-spec-type": "content-playlist",
"generic-trigger-spec-value": { "playlist": "
https://www.example.com/hls/title/index.m3u8
<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.example.com_hls_title_index.m3u8&d=DwMFaQ&c=udBTRvFvXC5Dhqg7UHpJlPps3mZ3LRxpb6__0PomBTQ&r=XniVbishGiO2Ao9hKqSc-hTVIWCi3T-x6GdHR4ZTgoM&m=971EsgFLP9ZLZjNqyHBn_eP79-nLrsreGAuMd4CdJ1bGkZZhLGpP43_nqnMc4Fh-&s=WNpDRf7l_aoJVrQzvMwJZXKtjzmEmn83XzqmqILOIaA&e=>",
"media-protocol": "hls"

         }
    }


This approach would mean changes in the capability objects.
We currently list the supported (subject, spec, extension) tuples. Instead
we would now have (subject, variants, spec, extension) tuples.

Option B. Define it within the different spec value objects, e.g. with a
"url-type" field
    {

         "trigger-subject": "content",
         "generic-trigger-spec-type": "content-playlist",
         "generic-trigger-spec-value": {
             "playlist": "https://www.example.com/hls/title/index.m3u8
<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.example.com_hls_title_index.m3u8&d=DwMFaQ&c=udBTRvFvXC5Dhqg7UHpJlPps3mZ3LRxpb6__0PomBTQ&r=XniVbishGiO2Ao9hKqSc-hTVIWCi3T-x6GdHR4ZTgoM&m=971EsgFLP9ZLZjNqyHBn_eP79-nLrsreGAuMd4CdJ1bGkZZhLGpP43_nqnMc4Fh-&s=WNpDRf7l_aoJVrQzvMwJZXKtjzmEmn83XzqmqILOIaA&e=>",

             "url-type": "published",             "media-protocol": "hls"
          }
       }

In this case no capability tuple would be changed. However, we would not be
able to specify whether the different url types are supported or not.

Any preference from your side?


>
>
>    1. For #7, can you provide more information as to what changes to
>    error codes you are considering?
>
> The only error code that we have for now is etimeout, to support TimePolicy
> [SM/NS] Adding desginated error codes whenever an extestion is defined,
> would not scale. There is an "eextension" error code that should be used
> for every extension related error. Furthermore, the error object includes
> a "description" field that can be used - so extension specific error
> information can be placed in the "description" field.
>
When defining a new extension (like a TimePolicy), that may have specific
> erros (e.g. "timeout"), we should also define the required format of the
> error description to allow parsing by the uCDN. So the error would be of
> type "eextension" and the description would be
>
"{subtype: timeout}". Alternatively, we can consider adding a general
> "description-dict" field to the error and utilze it in the same manner
> instead (having a per extension, predefined structre)
>

On Mon, Oct 30, 2023 at 10:22 AM Alan Arolovitch <alan@2you.io> wrote:

> Sanjay, Nir,
> Thanks, see my comments below
>
> Best regards
> Alan
>
> On Sun, Oct 29, 2023 at 5:09 PM Mishra, Sanjay <sanjay.mishra@verizon.com>
> wrote:
>
>> Hi Alan - Nir and I discussed your email below, and recommend the
>> following:
>>
>>
>>    1. For items 1 to 3 are new extensions you are proposing and those
>>    may be just easy to define in a new draft.
>>
>> Sounds good, I'll work on the draft once we finalize the cache management
> spec at SVTA.
>
>
>>    1. For #4, this appears a heavy lift in the current draft as some of
>>    the capabilities such as duration and recurrence and the RFC7265 brings
>>    added complexity for dCDN and some dCDN may not support. It may be best to
>>    leave Timepolicy as is defined in v2 but JCAL policy can be added in the
>>    new draft.
>>
>> I can see that JCAL/iCalendar support can be somewhat of a lift, even
> though there's a number of JCAL libraries out there.
> At the same time, the TimePolicy extension in its current form is a
> partial ad-hoc scheduling implementation, and should be obsoleted by
> RFC7265,
> which is a well-established IETF standard with implementation base.
> Do we want to release CI/T v2 that is obsolete at the time of release?
> If dCDN doesn't support some advanced JCAL scheduling features like
> recurrence, there's ample room to manage that using eextension error code
> in Error.V2
>
>>
>>    1.  Items 5 & 6 to generalize playlist to an object list is
>>    reasonable and we can add those in the next revision (v10) early Dec.
>>
>> Great, please let me know what is the best way to add those
> In the spirit of iterative changes, I propose to consider three minor
> features that may belong in the core CI/T v2 spec, rather than the cache
> management extension:
> - add trigger execution priority in Trigger.v2, to allow uCDN to introduce
> urgent triggers
> - add an optional object list to Trigger Status v2; this is to show to
> uCDN how dCDN resolved playlist (aka objectlist) provided to it via
> content.playlist(objectlist) spec
> - add an optional object list to Error.v2
> - update trigger spec objects that use URLs (which is all trigger specs
> except for CCID) to add a field that indicates the type of URL to use -
> published URL vs. cache key URL
>
> If we do that, we can have a clean break between the core CI/T v2 draft on
> hand, and 2 new drafts to be submitted later - cache management trigger
> extensions and
> cache management interface.
> Also, this would be a higher priority than adding JCAL support to v10.
>
>    1. For #7, can you provide more information as to what changes to
>    error codes you are considering?
>
> The only error code that we have for now is etimeout, to support TimePolicy
>
>> Thanks
>> Sanjay/NIr
>>
>> On Thu, Oct 26, 2023 at 1:26 PM Alan Arolovitch <alan@2you.io> wrote:
>>
>>>
>>> Hello
>>>
>>> I'm leading the cache management interface project at SVTA. The scope is
>>> to define a full-fledged CDNi-compliant cache management interface as part
>>> of the open caching architecture
>>> We are heading towards completion of the initial spec draft, and I would
>>> like to share my thoughts on how to best bring this work into CDNi.
>>> The current high-level scope includes:
>>> - Trigger-based cache data operations that rely on and extend CDNi
>>> triggers v2 as currently defined in CDNI CI/T 2nd edition
>>> - Additional CDNi metadata objects allowing uCDN to assign cache objects
>>> in configuration hierarchy to cache buckets; tag cache objects for use in
>>> triggers via content.ccid trigger type; indicate cache object priority
>>> - Cache bucket management API
>>>
>>> The current thinking is to split the work into two documents - one that
>>> specifies extensions to triggers v2, and the other that pertains to cache
>>> management specific metadata and related API.
>>>
>>> If so, would it make sense to incorporate the triggers v2 changes into
>>> the current draft - all or some of them, or introduce them as a separate
>>> document?
>>>
>>> The proposed triggers v2 change scope is as follows:
>>> 1. New trigger extension PrepositionPolicy, per paragraph 8 of CDNI CI/T
>>> v2, governing prepositioning policies like retry, patrial retrieval,
>>> preposition methods, concurrency and bandwidth, and use of CDNi metadata
>>> 2. New trigger extension PurgePolicy, governing purge semantics
>>> 3. New trigger extension CommonPolicy, governing trigger execution
>>> priority and type of URLs referenced in triggers (published vs. cache-key
>>> URLs)
>>> 4. Changes to trigger extension TimePolicy (8.2 in CDNi CI/T v2), adding
>>> trigger execution scheduling, based on JSON-based iCAL [RFC7265], allowing
>>> specifying start, stop, recurrence, duration, timezone etc.
>>> 5. Changes of new content.playlist trigger spec(7.5.1 in CDNi CI/T v2)
>>> to content.objectlist spec, in conjunction of introducing new types of
>>> object list, in addition to hls, dash and mss types per 7.5.2 in CDNi CI/T
>>> v2, allowing specifying lists of objects for trigger in JSON-encoded and
>>> plain text formats
>>> 6. Changes to Trigger Status Resource v2 (6.1.3 in CDNi CI/T v2) to
>>> specify objectlists that were derived from content.objectlist triigger spec
>>> 7. Changes to error codes in Error v2 to support the new extension
>>> functionality
>>>
>>> One possible option is to incorporate changes to existing objects (items
>>> 4-7) in the current draft, and defer the new trigger extensions (1-3) to a
>>> separate document.
>>>
>>> Sanjay, Kevin,
>>> I would appreciate some time in the open mic section in Prague to talk
>>> about this
>>>
>>> Kind regards
>>> Alan
>>>
>>>
>>> _______________________________________________
>>> CDNi mailing list
>>> CDNi@ietf.org
>>>
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_cdni&d=DwIGaQ&c=udBTRvFvXC5Dhqg7UHpJlPps3mZ3LRxpb6__0PomBTQ&r=XniVbishGiO2Ao9hKqSc-hTVIWCi3T-x6GdHR4ZTgoM&m=klLmU7WL8P8gyd8m8z7YB4NCt4EbVkWgNY8xAAHx_jHe9zZVF9x85ykXTw7n3KgG&s=9VNsXLtJaYQ0fxZWKYHdXOx9VLDAIzhrpd1OxV4QrR8&e=
>>>
>>
>