Re: [alto] Design issue on path vector

"Y. Richard Yang" <yry@cs.yale.edu> Wed, 22 March 2017 19:38 UTC

Return-Path: <yang.r.yang@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 EE61C129C06; Wed, 22 Mar 2017 12:38:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.401
X-Spam-Level:
X-Spam-Status: No, score=-2.401 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.197, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=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 R-oI95FvKts8; Wed, 22 Mar 2017 12:38:04 -0700 (PDT)
Received: from mail-wm0-x22e.google.com (mail-wm0-x22e.google.com [IPv6:2a00:1450:400c:c09::22e]) (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 647FE129504; Wed, 22 Mar 2017 12:38:03 -0700 (PDT)
Received: by mail-wm0-x22e.google.com with SMTP id t189so47316393wmt.1; Wed, 22 Mar 2017 12:38:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=0+4o/G8ZiY1rFI2qnCD+h0IyNJTjP9Wni/mb8QX0hpM=; b=NtV1974H4LGS24ZOg3M44ajnBwVGCmp6kAqXLobRGMx/SuY+S8pEtTdGxDqxJ8/ypJ gvrRnTfY7w7movkivY+Kamk5464dgjzWG2noX5cK1zA8HLYK5pG4ncDOldNomUEwozBH /gx7hAwA3mH+Up8Eep1aUlGYg9rQt4toqM26bO3YlIBNYhZJCtAleiJW/so1yrUN7EQH m7P/56YHSINHy4Pn7WOJ7v5aSx+VHbYt4gMSBf3K7pKZv1n9kg6DYTcNsEAOmuDaUI4z 2YZhnWAM7HFoV0/sizPOU0T1a1RzNZvb0cE106auNx1GajxSwxOjk6stJCh+sYN88baF TMow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=0+4o/G8ZiY1rFI2qnCD+h0IyNJTjP9Wni/mb8QX0hpM=; b=uSZ5p4lZPm0BCDwAPGbGrK3VYoGx3WW6CqxwRSZ2zBRhfpUnLArXhBxnZXMbs/xPNm 0wbtuVWSZALRmWekSiwe2O/tAlxYjR5Eg+NCq0lKJM+t3T8eql8cGhCXrV91rdFXM9md anWp5mfghkWDG85sR4y0Y6bvBO4SzbP+WO429/L2xlrSgEQbDdU28p1iB/xgiadC4yUP P8z1cEN3kuvKAOSlIj9viW9VL75iXQXjge5SdkQPy+NVS7d7iEdHDpkFQDxfEHorbwIn Ijfk9CvcFIIy5XDGv0gTbJctSpABdodFrZVhuNW92b1AX+wMFeo1MH4JeJqdLIAYsmjX 21qg==
X-Gm-Message-State: AFeK/H0YKaaR15p4cFSh6faG4ePULVvKrOVwVREm40HjuDiLIk4B3FnYEETF91N1O8uBKr5H59ynJ3d+C2xs+g==
X-Received: by 10.28.55.138 with SMTP id e132mr9291867wma.6.1490211481914; Wed, 22 Mar 2017 12:38:01 -0700 (PDT)
MIME-Version: 1.0
Sender: yang.r.yang@gmail.com
Received: by 10.223.136.210 with HTTP; Wed, 22 Mar 2017 12:38:01 -0700 (PDT)
In-Reply-To: <TY1PR04MB065600AD703BAEC14FC7D27DB53D0@TY1PR04MB0656.apcprd04.prod.outlook.com>
References: <TY1PR04MB065600AD703BAEC14FC7D27DB53D0@TY1PR04MB0656.apcprd04.prod.outlook.com>
From: "Y. Richard Yang" <yry@cs.yale.edu>
Date: Wed, 22 Mar 2017 15:38:01 -0400
X-Google-Sender-Auth: 3ulcyiIS6Z-4_m69wCMzIAfMlJw
Message-ID: <CANUuoLoQa-HhQcdKma5+6iUwY7-oXBoqt02OntU6ym-mM+LFcQ@mail.gmail.com>
To: Chan Dawn <dawn_chen_f@hotmail.com>
Cc: "alto@ietf.org" <alto@ietf.org>, "draft-yang-alto-path-vector@ietf.org" <draft-yang-alto-path-vector@ietf.org>, "jingxuan.n.zhang@gmail.com" <jingxuan.n.zhang@gmail.com>, "sabine.randriamasy@nokia-bell-labs.com" <sabine.randriamasy@nokia-bell-labs.com>, "wendy@wdroome.com" <wendy@wdroome.com>
Content-Type: multipart/alternative; boundary="001a11442716051699054b56e6ca"
Archived-At: <https://mailarchive.ietf.org/arch/msg/alto/3Z7NFXov1LF81EuUAfNL24lH8yI>
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 19:38:07 -0000

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?

> 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?


> 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"]

}

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.


> 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?


> 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?

Richard


> Thanks a lot!
>
> Dawn
>