Re: [alto] Design issue on path vector

Jensen Zhang <jingxuan.n.zhang@gmail.com> Thu, 23 March 2017 07:20 UTC

Return-Path: <jingxuan.n.zhang@gmail.com>
X-Original-To: alto@ietfa.amsl.com
Delivered-To: alto@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2C985124BE8; Thu, 23 Mar 2017 00:20:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 bb1Jy9ocVvg8; Thu, 23 Mar 2017 00:20:35 -0700 (PDT)
Received: from mail-oi0-x231.google.com (mail-oi0-x231.google.com [IPv6:2607:f8b0:4003:c06::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 24FAE129C3D; Thu, 23 Mar 2017 00:20:35 -0700 (PDT)
Received: by mail-oi0-x231.google.com with SMTP id f193so1727647oib.2; Thu, 23 Mar 2017 00:20:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=A2sPKlqOhl1VitVTFpGymVHf0X+CeXMLMsBWOy2r0+U=; b=GBtYdlqen1qLpQIGRkZWxobvImz5Msa701CycyOwPcL6D/Vo5f7DKDIEC/HwpaSI1O +TI8YvZzcdWZttHXI6jQ9v2Ml/x2OFt5Nm/DBZ8L2rVT2zVXMfWTxFdlLpi26NXko4oH ACGBS7/TmRGsic/gfwFLNNertg2rQWWqheCYFeaKvNrXe41jTN+QNj3BIf2u5FfX536K hzFzmXEkaADhJMdYYcC/DXU93sLufxUph9QXiCsSVnXQYY9UiASd2eKxh08sH9It6E87 4zSnkKIzxM9sV0p6EXDmraqGVPhj9wfq9BI6JlF4mZzpz+g9nrvhnu0MaEZ2aCtucqAQ dKJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=A2sPKlqOhl1VitVTFpGymVHf0X+CeXMLMsBWOy2r0+U=; b=XzxXe0MzFmrA3F1kMEuTj0roOhjhaxTfL9gmQ4j0XoMiCTP+kSBYok0XlHlCZcyln8 xSg9/m5lzzYjmzSGhUgIL1ZNxrSrQW1ItZF+pa7XjuR2T5I6RHL6Ogj7jEbTKa0cz8lE yUfoBtLPuM6lV4CLRK4FVoC9ICR9STsC9Yfc13CaMiuNRVPcceXXnq0F+OsOu1bjTnxK odTrXV7AGCSp+JTqve+J7OyQJxVWOHWXDpN4dhZXvVsmEUNrMRTT5AreXcYEgBlOE3tC s7BPdU9rEEhVhCdc0tPEO1ae7ZY+8Xp1GLHvY4evrG3KHypzKx7Qp+x5IPw9rs2AL/CF 2tnw==
X-Gm-Message-State: AFeK/H0nXKkT6MEZ4z7Gdqrs1nM70vR3RVo5/Jz5gtiNmyNPsNJhUAbYF5a2kLaq+mbEEtxRJOu/mTRpxVHHhw==
X-Received: by 10.202.219.87 with SMTP id s84mr538757oig.76.1490253634357; Thu, 23 Mar 2017 00:20:34 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.157.13.230 with HTTP; Thu, 23 Mar 2017 00:20:33 -0700 (PDT)
In-Reply-To: <CANUuoLoQa-HhQcdKma5+6iUwY7-oXBoqt02OntU6ym-mM+LFcQ@mail.gmail.com>
References: <TY1PR04MB065600AD703BAEC14FC7D27DB53D0@TY1PR04MB0656.apcprd04.prod.outlook.com> <CANUuoLoQa-HhQcdKma5+6iUwY7-oXBoqt02OntU6ym-mM+LFcQ@mail.gmail.com>
From: Jensen Zhang <jingxuan.n.zhang@gmail.com>
Date: Thu, 23 Mar 2017 15:20:33 +0800
Message-ID: <CAAbpuyo7x2q=B3FU6kdm8mckg744n=dLYmgJaeUfnaHLCnLzzA@mail.gmail.com>
To: "Y. Richard Yang" <yry@cs.yale.edu>
Cc: Chan Dawn <dawn_chen_f@hotmail.com>, "alto@ietf.org" <alto@ietf.org>, "draft-yang-alto-path-vector@ietf.org" <draft-yang-alto-path-vector@ietf.org>, "sabine.randriamasy@nokia-bell-labs.com" <sabine.randriamasy@nokia-bell-labs.com>, "wendy@wdroome.com" <wendy@wdroome.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/alto/yKrodwws7gHer4g0XG9syPG3YC4>
Subject: Re: [alto] Design issue on path vector
X-BeenThere: alto@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Application-Layer Traffic Optimization \(alto\) WG mailing list" <alto.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/alto>, <mailto:alto-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/alto/>
List-Post: <mailto:alto@ietf.org>
List-Help: <mailto:alto-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/alto>, <mailto:alto-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 23 Mar 2017 07:20:38 -0000

Hi Richard,

Thanks for your feedback! See my comments inline:

Jensen

On Thu, Mar 23, 2017 at 3:38 AM, Y. Richard Yang <yry@cs.yale.edu> wrote:
> Dear Dawn, Jensen,
>
> Some comments. Please see below inline.
>
> On Tue, Mar 21, 2017 at 1:02 PM, Chan Dawn <dawn_chen_f@hotmail.com> wrote:
>>
>> Hi all,
>>
>> I'd like to start a discussion for path-vector design and push it as an
>> acceptable specification. Following is my thought:
>>
>> We have agreed on delivering path-vector + abstract network elements
>> design for net graph representation since IETF 96. This design specifies the
>> cost value as a path vector which is a JSONArray of network elements and
>> puts the network element properties into a nep-map. Considering to reference
>> the nep-map from another resource (we propose to use unified-prop-map),
>> below is a naive design:
>>
>> An example of IRD:
>>
>> “pv-endpoint-cost-map”: {
>>     “uri”: “http://alto.example.com/lookup/endpointcost”,
>>     “media-type”: “application/alto-endpointcostmap+json”,
>>     “capabilities” : {
>>       “cost-type-names”: [“pv"]
>>     },
>>     “uses”: [“default-nep-map"]
>> }
>
> I assume that the same IRD will also have an entry for "default-nep-map" and
> there is also a definition for "pv". You omitted them in this example,
> correct?

Yes, they are also in the same IRD.

>> An example of ECS response:
>>
>> “meta”: {
>>   “dependent-vtags”: [
>>     { “resource-id”: “default-nep-map”, “tag”: “<sha256>” }
>>   ],
>>   “cost-type”: {“cost-mode”: “path-vector”, “cost-metric”: “ane”}
>> },
>> “endpoint-cost-map”: ...
>>
>> However, the problem is how to reference the filtered property map that we
>> use for clients to retrieve the properties of the corresponding network
>> elements. In the above example, the referenced network element property map
>> is added in the “uses” field. However, here is the trouble:
>>
>> Since the network elements are abstract, the network element property map
>> is dynamically generated when the client sends a path-vector query. So, to
>> add the refrenced network element property map in the “uses” field of a
>> resource is not possible because the resource id in the “uses” field is
>> somehow static, it already exists before queried.
>>
> A resource ID is a name to be used in the IRD to provide the needed query
> information (e.g., uri) to obtain related information. If the pv resource
> returns an property name (dynamic), and the property resource has an accept
> of the dynamic property name, can this solve your problem?
>

Let me understand your proposal. Is it like the following?

ECS response meta:

"meta": {
  "dependent-vtags": [ { "resource-id": "default-nep-map":, "tag":
"<sha256>" } ],
  "cost-type": { "cost-mode": "path-vector", "cost-metric": "ane" },
  "query-id": "<A Query Specific ID>"
}

And nep-map request:

"query-id": "<The Same Query as the One in the Response>",
"entities": ...
"properties": ...

So every nep-map should be identified by <resource-id, tag, query-id>
rather than only <resource-id, tag>? It seems to be a solution. Let me
think about it.

>> To solve this problem, we proposed the following design in
>> draft-yang-alto-path-vector-04:
>>
>> An example of ECS response:
>>
>> “meta”: {
>>   …
>>   "nep-map": {
>>            "uri": "http://alto.example.com/propmap/lookup/nep-map",
>>            "media-type": "application/alto-prompmap+json",
>>            "accepts": "application/alto-propmapparams+json",
>>            "capabilities": {
>>              "domain-types": [“ane"],
>>              "prop-types": ["availbw"]
>>            }
>>          }
>> },
>> “endpoint-cost-map”: ...
>>
>> But we found two issues in this design:
>>
>> 1. How to present the supported properties of the network elements in the
>> IRDResourceEntry of a resource? In this example, the nep-map can only
>> provide the “availbw” property. If the client needs the “delay” property of
>> the returned network elements, it cannot get this knowledge that the
>> dependent nep-map of this ECS resource does not provide this property before
>> it sends the query. So the client will send a useless query.
>
> One possibility is that a pv resource also indicates the metrics that it can
> provide, i.e.,
>
> “pv-endpoint-cost-map”: {
>     “uri”: “http://alto.example.com/lookup/endpointcost”,
>     “media-type”: “application/alto-endpointcostmap+json”,
>     “capabilities” : {
>       “cost-type-names”: [“pv"]
>       // define metrics here??
>     },
>     “uses”: [“default-nep-map"]
> }
>

Yes, it is a solution. And we tried to propose the same solution. But
it will introduce an extra capability. And only when the cost-mode is
"path-vector", this capability can be enabled. So it is too specific.
How do you think?

>> 2. This design does not provide a resource-id for the nep-map, so the
>> server cannot provide an incremental update service for the nep-map.
>>
> This is a good point. We need to think a bit hard on incremental updates. A
> reply will come shortly.
>

Looking forward.

>> We found the fundamental problem is caused by the dynamic resource. In the
>> previous ALTO extensions, all the resources can be defined by the static IRD
>> Resource Entries. But in this case, we have to handle the dependency
>> relationship between FCM/ECS and a dynamic property map resource. So we
>> propose the following design to solve this problem:
>>
>> 1. Add a new attribute in the IRDResrouceEntry:
>>
>> object {
>>     JSONString               uri;
>>     JSONString               media-type;
>>     [JSONString              accepts;]
>>     [Capabilities            capabilities;]
>>     [ResourceID              uses<0..*>;]
>>     [ImmediateResourceEntry  immediate-uses<0..*>;]
>> } IRDResourceEntry;
>>
>> object {
>>     JSONString      media-type;
>>     [JSONString     accepts;]
>>     [Capabilities   capabilities;]
>>     [ResourceID     uses<0..*>;]
>> } ImmediateResourceEntry;
>>
>> 2. Add a new attribute in the meta of FCM/ECS response:
>>
>> object {
>>     [JSONString               vtag;]
>>     [VersionTag               dependent-vtags<1..*>;]
>>     [ImmediateVersionTag      immediate-dependent-vtags<1..*>;]
>> } ResponseMeta;
>>
>> object {
>>     ResourceID       resource-id;
>>     JSONString       vtag;
>>     [JSONNumber      time-out;]
>> } ImmediateVersionTag;
>>
>> Here is an example:
>>
>> IRD:
>>
>>     "pv-endpoint-cost-map": {
>>       "uri": "http://alto.example.com/lookup/endpointcost",
>>       "media-type": "application/alto-endpointcost+json",
>>       "accepts": "application/alto-endpointcostparams+json",
>>       "immediate-uses": [
>>         {
>>           "media-type": "application/alto-propmap+json",
>>           "accepts": "application/alto-propmapparams+json",
>>           "capabilities": { "domain-types": ["ane"],
>>                             "prop-types": ["availbw", "delay"] }
>>       ],
>>       "capabilities": {
>>         "cost-type-names": ["pv-ane", "num-routingcost", "num-hopcount"],
>>         "cost-constraints": true
>>       }
>>     },
>>
> This "immediate-use" design reminds me of nameless inner class/object. Does
> this require that the resource in the "immediate-use" to use the same uri as
> the "parent" uri?
>

What's the meaning of "parent" uri? A prefix of the uri? If so, I
think it is a good proposal.

>> Response:
>>
>>   {
>>     "meta": {
>>       "cost-type": {
>>         "cost-mode": "path-vector",
>>         "cost-metric": "ane",
>>       },
>>       "immediate-dependent-vtags": [
>>         {"resource-id": "nep-map-<sha256>",
>>          "vtag": "<sha256>",
>>          "time-out": 180}
>>       ]
>>     },
>>     "endpoint-cost-map": {
>>       ...
>>     }
>>   }
>>
>> Shall we push this design into the pv draft? Any feedback from others?
>>
>
> It is a quite interesting design. If we can modify the incremental updates
> to include not only resource id but also some additional info, can the
> problem be solved?
>

Although we can extend incremental updates to include additional info,
I think the resource id is still a required attribute. Because we need
a unique id to identify the resource. A potential way is to use "uri"
instead of "resource-id"? But for incremental update service, resource
"uri“ cannot be used to index the resource attributes such as
"media-type" and "capabilities".

> Richard
>
>>
>> Thanks a lot!
>>
>> Dawn

Thanks a lot!