Re: [alto] Design issue on path vector

Jensen Zhang <jingxuan.n.zhang@gmail.com> Wed, 22 March 2017 06:35 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 B4E2B127843; Tue, 21 Mar 2017 23:35:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 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] 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 wIRfFR6IROte; Tue, 21 Mar 2017 23:35:55 -0700 (PDT)
Received: from mail-oi0-x230.google.com (mail-oi0-x230.google.com [IPv6:2607:f8b0:4003:c06::230]) (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 76C37127077; Tue, 21 Mar 2017 23:35:55 -0700 (PDT)
Received: by mail-oi0-x230.google.com with SMTP id l203so13273585oia.0; Tue, 21 Mar 2017 23:35:55 -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=d4lv7f9ynW9zqksFGsLnWkl+y+QIDflz+ST3TflRuug=; b=P8WCFULleZtujQZkRYuqkE5ymAZSs43S6wANuthEPZwtftCP8jsSnn8dkL1BkGEuT4 JW29oWLg+oCK830Akd6l165LxMqvVS8ILYIps159lAiKa0n/PiHLcsKsc39Ro0FdaN8c HTiiKNhgso/LGiP+3mt4uOdNrt6vpeU9uDxbrzHS6ouje/2dfew5kqHleysNbo2Cv8+c 0tj0Wtz27tk/+3vli3j6wMdZfKZiuVElNa6xfeQrttvPSuh3NRqKokGmsM6akp9mRvvT NmXNuQFgI7/Ep9wo0yoQSIvpbQ0eHyyukkrXjVhRTqQF2w7dXqG4b6fzP2ElJippYBak HETQ==
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=d4lv7f9ynW9zqksFGsLnWkl+y+QIDflz+ST3TflRuug=; b=V1GtYaL6zXQfuB9iXtGbr6Fa5DugPHOKLByYht+xTKepVgiNPhnC13YtFNZeXeofcF JpLq/mfgxpA0pYqO/OOC0eScDGGTPGWMnrkXY5U1dfIWJOhLEd3j2vFcBzLeF0RXDejD xYm2vXxz6GFRwl6IG/rjOw08PKW8Bro4yxWDiRsPwx8ExB5MzRzZ3Iups9X58b+5quXk N6psobCN66IaSAcI1Sy00/Qaz0RTNHf1zt6knD48TMlQi1k1XZXjIMVk4inpHO6zq8jK GzD4duopir5rJqig2PL9m7lm9EXq34dHDT4W3lo7FpSZPwTC3iyUXyFK9KDaCnOxztzO cwEw==
X-Gm-Message-State: AFeK/H0b8VTXNg0MseX1Ve8J7UKxxkmhF7qEi9CTrE01pXaUE1S996ezk+sCYInA3ExiyEcIqSIXamHT8ZwIKg==
X-Received: by 10.202.197.133 with SMTP id v127mr11025514oif.155.1490164554788; Tue, 21 Mar 2017 23:35:54 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.157.13.230 with HTTP; Tue, 21 Mar 2017 23:35:54 -0700 (PDT)
In-Reply-To: <KL1PR0302MB26290AAB2597036E65942201A83C0@KL1PR0302MB2629.apcprd03.prod.outlook.com>
References: <TY1PR04MB065600AD703BAEC14FC7D27DB53D0@TY1PR04MB0656.apcprd04.prod.outlook.com> <KL1PR0302MB26290AAB2597036E65942201A83C0@KL1PR0302MB2629.apcprd03.prod.outlook.com>
From: Jensen Zhang <jingxuan.n.zhang@gmail.com>
Date: Wed, 22 Mar 2017 14:35:54 +0800
Message-ID: <CAAbpuyqphmvXfDkFLz+Yo1F4c2ACFHezEjKCTnS8rjZn-nfiQA@mail.gmail.com>
To: xin wang <xinwang2014@hotmail.com>
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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/alto/LgVWQk_rcvIx7aYr3bMPMFTUA3E>
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: Wed, 22 Mar 2017 06:35:57 -0000

Hi Dawn,

Thanks for starting this discussion.

Hi Xin,

Thanks for your comments. See inline.

Jensen


On Wed, Mar 22, 2017 at 12:32 PM, xin wang <xinwang2014@hotmail.com> wrote:
> Hi Dawn,
>
>
> If I am wrong please correct me. For the second issue, the resource id could
> be reflected in the hash code of the uri field. I think you are missing that
> in your ECS example.

I think "uri" and "resource-id" are very different. How can we reflect
the "resource-id" in the "uri"? Do you want to introduce the extra
semantics into the "uri"?

> For the first issue, in my understanding, since network
> elements are dynamically generated after the computation of path-vector, I
> think it is hard to determine element property types before the computation.
> This may depend on whether we support "unknown" in the response of network
> element property map, i.e.,
>
> "property-map": {
>          "ne:ne12": { "availbw": "90", "delay": "unknown" },
>          "ne:ne23": { "availbw": "80", "delay": "15" },
>          "ne:ne34": { "availbw": "70", "delay": "25" }
>  }

Please notice that "prop-types" is a capability of "prop-map". If this
"prop-map" does not support "delay", it will be determined before you
send any query. And you even cannot query "delay" to this "prop-map".
"unknown" does not solve this issue.

I think what we are discussing is that if the ALTO server provides a
"path-vector" FCM resource, it should inform the client which
"prop-types" will be supported by the generated "prop-map" at an
earlier stage. If you provide this information in the response of FCM
rather than the IRD entry of it, the client may have to send a useless
FCM query before it gets this information.

>
>
> Best,
> Xin
>
> ________________________________
> From: alto <alto-bounces@ietf.org> on behalf of Chan Dawn
> <dawn_chen_f@hotmail.com>
> Sent: Tuesday, March 21, 2017 13:02
> To: alto@ietf.org; draft-yang-alto-path-vector@ietf.org
> Subject: [alto] Design issue on path vector
>
>
> 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"]
>
> }
>
>
> 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.
>
>
> 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.
>
> 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.
>
>
> 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
>
>       }
>
>     },
>
>
> 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?
>
>
> Thanks a lot!
>
> Dawn