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

Alan Arolovitch <alan@2you.io> Tue, 07 November 2023 08:50 UTC

Return-Path: <alan@2you.io>
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 E7225C170610 for <cdni@ietfa.amsl.com>; Tue, 7 Nov 2023 00:50:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.804
X-Spam-Level:
X-Spam-Status: No, score=-1.804 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, 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=2you-io.20230601.gappssmtp.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 Lmf61hLKfQpW for <cdni@ietfa.amsl.com>; Tue, 7 Nov 2023 00:50:08 -0800 (PST)
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 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 18647C15107A for <cdni@ietf.org>; Tue, 7 Nov 2023 00:50:04 -0800 (PST)
Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-5079f9675c6so7252717e87.2 for <cdni@ietf.org>; Tue, 07 Nov 2023 00:50:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2you-io.20230601.gappssmtp.com; s=20230601; t=1699347001; x=1699951801; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=GeBU5yqpGqkugr/nxlf6Go9XM7yVlSUyhcY8CyeV6Qg=; b=SkFHSxnpnbQv7gkHHCNeiwsO5S7v3YOGW6rmzvNyg7vlYjjLpgEl4r3D0n1qc9wrLe dzKsni54R8KJ8T11vx0AzVTb1/3w3DedkDlg3XCVrwVsFVzsuYm/HQm1gvT/qYe1ji0p 7ZgyUph+XW8lBzTDzs1a8MqlVn66GuJsCrbOh+pohEpaaBu7mgIXX2XCTB1NvrhYBzKJ s0RIOfAzm5SAyr8ZXaHW5n3irYv11RFxQKA49CVT332uF2tzRsES1TFxSEwNTDrO0iwO E0VuX8VEYUE9kOGapsVwkKG/y6oVYxcT9GrMgZxq2mtMvLWSdt8eZGLisgEiHucIbbvr QbYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699347001; x=1699951801; 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=GeBU5yqpGqkugr/nxlf6Go9XM7yVlSUyhcY8CyeV6Qg=; b=oqUou13aSuMYXOj42C9+vTkFHAsfq5jpIIYOaoEOEJZlutagURnnTcb2ZegFwhRjUd 9A5YFfsMVhGS3qzN7xDLuimGzq3offHT422nXFGdVVtcGQS9KrUnJf1TjQHBMunxXtuL US7np09Gew4+eTnImWPOxYkkqlEFuXProRrwfNgStKowFhmeA8YQ/o4fXFShWhGwptUe gTtrUv7uk8hKxdabXElCW0nv26MknYjzf126iGLRFzF3D+riUk4cp0pNG8GMcf4t6HXv RRzGaam5kWvJVuOA7cyEogTHndtT8f90n87fMEJcU+i9lt5R5ToFLIZF/ZIgJZea32/x IQ8g==
X-Gm-Message-State: AOJu0Yy9jTIAtV8/XiPTQ0oxk5f3y0WfJ56xTtulCduIHvmd5t+fwLeZ XlyigC5gIkjuPC6odo6iSh1Yq2Br8Z7+QGEEvLfR0NLJyPanP47pse9vgZli
X-Google-Smtp-Source: AGHT+IEmPCKsWBC3TxO7oDrqNJFweJwDTwlwJdqD7L4FZRCujyEK5FZbKjLMXJwJBV1RZHZAzTFF3WVxzMMH6YZERCs=
X-Received: by 2002:ac2:5a51:0:b0:508:12f4:34dc with SMTP id r17-20020ac25a51000000b0050812f434dcmr22714437lfn.42.1699347001177; Tue, 07 Nov 2023 00:50:01 -0800 (PST)
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> <CA+EbDtAJdG-_daui+5wzhTsP8-4O0_tFsmNAxQJqWts_+qnPTg@mail.gmail.com> <CANv64+6pQb_yhTDEie1AuW5uySwSDsAmoSwqrCE5LHOQpHFTKw@mail.gmail.com> <CA+EbDtC20F+840tTm=mEcRk0_-mm8hfiVV8MZ545=avOCG2Ydg@mail.gmail.com>
In-Reply-To: <CA+EbDtC20F+840tTm=mEcRk0_-mm8hfiVV8MZ545=avOCG2Ydg@mail.gmail.com>
From: Alan Arolovitch <alan@2you.io>
Date: Tue, 07 Nov 2023 03:49:50 -0500
Message-ID: <CANv64+5SY_M-XqoPENvQ-a3BVOsuxNdV39nh-eczfTQSyvzzXw@mail.gmail.com>
To: "Mishra, Sanjay" <sanjay.mishra@verizon.com>
Cc: cdni@ietf.org, Nir Sopher <nirsopher@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000005b149706098c0e8f"
Archived-At: <https://mailarchive.ietf.org/arch/msg/cdni/JtlXlnG_MWt1HaNY9B9NzXH28QI>
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: Tue, 07 Nov 2023 08:50:13 -0000

Sanjay,
Sure, 3-way sidebar call makes the most sense as a next step
To add to the list of issues, modifications are required to FCI trigger
scope capability object
The spec implicitly assumes a single interface supporting CI/T triggers v2
per dCDN instance
We envision multiple interfaces supporting triggers, e.g. configuration
interface supporting metadata.* trigger subjects,
and cache management interface supporting content.*
Propose to add trigger-endpoint-uri to the CI/T Trigger Scope object, e.g.:

{
 "capabilities": [
   {
     "capability-type": "FCI.TriggerScope",
     "capability-value": {
       "trigger-scope-capabilities": [
         {
            "trigger-action": "preposition",
            "trigger-subject": "metadata",
            "trigger-specs": ["urls"] ,
           * "trigger-endpoint": "https://ci.dcdn.com <https://ci.dcdn.com>"
*         },
         {
            "trigger-action": "preposition",
            "trigger-subject": "content",
            "trigger-specs": ["urls", "playlist"],
*            "trigger-endpoint": "https://ci.dcdn.com <https://ci.dcdn.com>"*
            "trigger-extensions": ["time-policy"]
         },
         {
            "trigger-action": "purge",
            "trigger-subject": "content",
            "trigger-specs": ["urls", "playlist", "ccid", "regex"],

*            "trigger-endpoint": "https://ci.dcdn.com
<https://ci.dcdn.com>"*            "trigger-extensions":
["time-policy"]
         },
         {
            "trigger-action": "invalidate",
            "trigger-subject": "content",
            "trigger-specs": ["urls", "playlist", "ccid", "regex"],

*            "trigger-endpoint": "https://ci.dcdn.com
<https://ci.dcdn.com>"*            "trigger-extensions":
["time-policy"]
         }
      ]
     },
     "footprints": [
       <Footprint objects>
     ]
   }
 ]
}

Kind regards,
Alan




On Mon, Nov 6, 2023 at 3:49 AM Mishra, Sanjay <sanjay.mishra@verizon.com>
wrote:

> Hi Alan - Please see comments embedded below. Also, I suggest a 3-way call
> as that will make it easier to sort out any changes that get added into v9
> and into the new cache management draft.
>
>
>>>>>    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.
>>>>
>>> [AA] I don't think I agree here.
>> I see CI/T triggers as a spec for queue-based task execution and
>> extensions as a mechanism to enrich the processing of individual tasks.
>> Task prioritization is a core feature of the trigger framework, not an
>> individual trigger feature.
>> Trigger priority support should likely go beyond individual trigger
>> extensions.
>> For example, when viewing pending and complete triggers, uCDN may be
>> interested to see trigger creation time (mtime), the time when trigger
>> execution started, and trigger priority,
>> so it can make decisions on new triggers priority.
>>
> [NS/SM] prioritization requires further definition: how a priority is
> specified, how strict is the prioritization, do we interrupt one trigger
> from running when a new, higher priority trigger, is introduced? etc.
> Beyond definition, adding it as an integral part of the trigger structure,
> forces the dCDN to support that.
> Note that one of the fundamental concepts in the new structure of the
> trigger object is its extendability. We do not want to redefine the trigger
> object again and again (creating trigger.v3, trigger.v4...). Therefore the
> trigger object should be lean as possible.
> We have the specs list to define "on what to run"
> We have the extensions list to define "how to run"
> Both have registries for new types.
> A prioritization algorithm can be simply defined as an extension, and a
> future extension can improve it.
>
> - 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.
>>>>
>>>
>>>
>> [AA] Yes, it might. For that reason the proposal is to allow dCDN to
>> specify such object list via URL to dCDN-side resource, using MI.Link
>> mechanism.
>> In this way, there may be no need to have a flag in the status request,
>> because uCDN may choose not to retrieve the object list if it's not
>> interested in it.
>> I am not sure what the purpose of the designated API endpoint would be.
>> To make sure, all these proposals have already been written up in the
>> SVTA spec draft.
>>
>  [NS/SM] +1 for having it in another link.
> The "designated endpoint" is just a predefined link that we do not need to
> list as part of the status object.
> e.g. /Triggers/0/targets-list
>
> On Fri, Nov 3, 2023 at 3:42 PM Alan Arolovitch <alan@2you.io> wrote:
>
>> Sanjay, Nir,
>> Thanks for the feedback, please find my responses embedded below
>>
>> On Fri, Nov 3, 2023 at 5:11 AM Mishra, Sanjay <sanjay.mishra@verizon.com>
>> wrote:
>>
>>> 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)
>>>>
>>>
>> [AA]  If so, and we think that TimePolicy in its current form has value,
>> I propose we break out the JCAL support into a new extension SchedulePolicy,
>> and have it specified together in the same draft with other extensions
>> coming out of the SVTA cache management spec
>>
>>>
>>>
>>>> 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.
>>>>
>>> [AA] I am okay with a capability object specifying support per
>> extension. I don't think it makes sense to specify subsets of extension
>> functionality, as we would be guessing
>> what part of the extension future implementations may choose to opt in or
>> out of.
>> In my mind, this is exactly the purpose of having the eextension error
>> code in Error.V2 object, to allow extension support negotiation without
>> prescribing support specifics.
>>
>>
>>>>>    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.
>>>>
>>> [AA] I don't think I agree here.
>> I see CI/T triggers as a spec for queue-based task execution and
>> extensions as a mechanism to enrich the processing of individual tasks.
>> Task prioritization is a core feature of the trigger framework, not an
>> individual trigger feature.
>> Trigger priority support should likely go beyond individual trigger
>> extensions.
>> For example, when viewing pending and complete triggers, uCDN may be
>> interested to see trigger creation time (mtime), the time when trigger
>> execution started, and trigger priority,
>> so it can make decisions on new triggers priority.
>>
>>>
>>>
>>>> - 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.
>>>>
>>>
>>>
>> [AA] Yes, it might. For that reason the proposal is to allow dCDN to
>> specify such object list via URL to dCDN-side resource, using MI.Link
>> mechanism.
>> In this way, there may be no need to have a flag in the status request,
>> because uCDN may choose not to retrieve the object list if it's not
>> interested in it.
>> I am not sure what the purpose of the designated API endpoint would be.
>> To make sure, all these proposals have already been written up in the
>> SVTA spec draft.
>>
>>>
>>>>
>>> - 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.
>>>>
>>> [AA] As above, the way out of burdening the response is by supplying the
>> list via an external URL.
>>
>>>
>>> - 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?
>>>
>> [AA] I prefer Option B. The URL type is an instruction on how to
>> interpret the spec, along the lines of "media-protocol".
>> If there's a need to publish an individual capability around this, it may
>> be added just like the CI/T protocol capability list (section 9.3).
>>
>>
>>>
>>>>
>>>>
>>>>    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)
>>>>
>>> [AA] etimeout is different from eextension. The latter is defined now as
>> an error in parsing the extension (e.g. malformed extension syntax), or
>> lack of support for the extension.
>> etimeout communicates back to uCDN that dCDN supports the extension and
>> parsed it correctly, however, couldn't execute the trigger within policy
>> constraints specified in the extension.
>> This has broader use in the extension subsystem than just time-out. It is
>> different from ereject, which indicates that the trigger was not picked up
>> for execution.
>>
>>>
>>> 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=
>>>>>>
>>>>>
>>>>
>>
>> --
>> Alan Arolovitch
>> CEO, 2You IO
>> *E* alan@2you.io | *M* +1.617.8939400 <(617)%20893-9400> | *W* www.2you.
>> io
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.2you.io_&d=DwMFaQ&c=udBTRvFvXC5Dhqg7UHpJlPps3mZ3LRxpb6__0PomBTQ&r=XniVbishGiO2Ao9hKqSc-hTVIWCi3T-x6GdHR4ZTgoM&m=c-5SyPLTVB1nIyBEtOXxvVcxPojbcaHEQc17TO-ElGhM-EWAiIsBwCwxkn3mp0bb&s=AdXGBx_lSJ5IRkEx_vi95QKoWPQJlzL8vYt1vpXEGFE&e=>
>>
>

-- 
Alan Arolovitch
CEO, 2You IO
*E* alan@2you.io | *M* +1.617.8939400 <(617)%20893-9400> | *W* www.2you.io