Re: [alto] Design issue on path vector

"Y. Richard Yang" <yry@cs.yale.edu> Fri, 24 March 2017 00:35 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 13518129B0F; Thu, 23 Mar 2017 17:35:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.701
X-Spam-Level:
X-Spam-Status: No, score=-1.701 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_NONE=-0.0001, SPF_PASS=-0.001] autolearn=no 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 w3yQDtVMRkoA; Thu, 23 Mar 2017 17:35:27 -0700 (PDT)
Received: from mail-wr0-x235.google.com (mail-wr0-x235.google.com [IPv6:2a00:1450:400c:c0c::235]) (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 111E1129AC9; Thu, 23 Mar 2017 17:35:27 -0700 (PDT)
Received: by mail-wr0-x235.google.com with SMTP id y90so40209890wrb.0; Thu, 23 Mar 2017 17:35:26 -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=iU6+EzjZvN6LEze1M2T8UbZeQ+8Qx0tUNRa9gl4evDo=; b=pBXDfw+bN6F4/ivqPYCGLr+7S4y8pAgP0fp6tREqvGAchkRzVnHvbxBn6/9YerbI3z 69fkFARj9adtzYylyQy841+W24/DTKWfCHqxMvESUTK/YHNclpEr0KLQKxgf2VlgHmJV G1qZnM6qPd9smLgKoxmrqelMkxEPfgKzevndorW518Sc6/90ZfXjp95VnfbtpIh0T17o jzF94/CbE/gULCoQmEjXHmFDr6QjPyUpgIxDiQZkTSZbQMDf1L2zZeDYeB73ZX0svHC6 lv7+D1XNU1SvWXk2VDeuiKYSchpeITeN1uNWENXBT+C2E5uYbZMB52El+mgl6O6laQML meDA==
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=iU6+EzjZvN6LEze1M2T8UbZeQ+8Qx0tUNRa9gl4evDo=; b=fKLPm1xly1Qn2hVK1hAkirotVKXGvdI8gV2kf/chTD/9iOXl2UuCBUD+P+fQMsLoII UwE3KsxZU2d6q54PY3vhkYdVifxUW3yrB/VKbgySpt0WvWqykANNv1+/1Wjt2mo+D54k cm7bAA8pomwSMnV7oW9px8qcT3Bm+SnxBdU8CZF/AEzHLIPc8vmZiy6Tde2tvzXFNVY2 27h6A3pkqpxT2Fmd2wIRhnCa0MxCavBgpIDWD9fIVT7wIAhHhdKosgLK3KWkApuaBcKq MtxtuJ2Syfd1HztD2WOokKglgW10rBKwuh/1pbo02Mxcqo3r8EmaZf+XFt6jMLqJRgLX qDAg==
X-Gm-Message-State: AFeK/H3ydhUfXv+IuKTtSGOHRlXKxB50M5m9FfLglGsPrfe/PpZsMYEuXSkjbhOq/JNsylFtOIUqQQ/3BIzHWQ==
X-Received: by 10.223.144.67 with SMTP id h61mr5576808wrh.30.1490315725597; Thu, 23 Mar 2017 17:35:25 -0700 (PDT)
MIME-Version: 1.0
Sender: yang.r.yang@gmail.com
Received: by 10.223.136.210 with HTTP; Thu, 23 Mar 2017 17:35:25 -0700 (PDT)
In-Reply-To: <CAAbpuyo7x2q=B3FU6kdm8mckg744n=dLYmgJaeUfnaHLCnLzzA@mail.gmail.com>
References: <TY1PR04MB065600AD703BAEC14FC7D27DB53D0@TY1PR04MB0656.apcprd04.prod.outlook.com> <CANUuoLoQa-HhQcdKma5+6iUwY7-oXBoqt02OntU6ym-mM+LFcQ@mail.gmail.com> <CAAbpuyo7x2q=B3FU6kdm8mckg744n=dLYmgJaeUfnaHLCnLzzA@mail.gmail.com>
From: "Y. Richard Yang" <yry@cs.yale.edu>
Date: Thu, 23 Mar 2017 20:35:25 -0400
X-Google-Sender-Auth: a8L4P1CmzSJcAZAfJlXDRbbf3xI
Message-ID: <CANUuoLqXUkxjoKr-8Cqw+67vGn4KvLiMMKYQ7OvUsm0BcF3QMw@mail.gmail.com>
To: Jensen Zhang <jingxuan.n.zhang@gmail.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>, "sabine.randriamasy@nokia-bell-labs.com" <sabine.randriamasy@nokia-bell-labs.com>, "wendy@wdroome.com" <wendy@wdroome.com>
Content-Type: multipart/alternative; boundary="94eb2c06a0b06d7201054b6f2b5b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/alto/vokTTFJU60H3w4H5APjk2EBodZM>
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: Fri, 24 Mar 2017 00:35:30 -0000

Jensen, Dawn,

Please see below.


> >> 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 a 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.
>

Yep. Essentially, since we have the freedom to design property map---it is
great that we are designing PV before the property, we can add needed info.


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

Agree with your thinking. The downside is that the domain of capabilities
will depend on the content, and hence static typing will not work. But I
feel that this is a small price.


> >> 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.
>
>
Yep.


> >> 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".
>
> Good point.

Richard