Re: [alto] Design issue on path vector

Dawn Chan <dawn_chen_f@hotmail.com> Fri, 24 March 2017 12:02 UTC

Return-Path: <dawn_chen_f@hotmail.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 1390B1296B0; Fri, 24 Mar 2017 05:02:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.145
X-Spam-Level:
X-Spam-Status: No, score=-0.145 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FORGED_HOTMAIL_RCVD2=0.874, FREEMAIL_FROM=0.001, HTML_FONT_FACE_BAD=0.981, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=hotmail.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 VcyAdfAdDt2u; Fri, 24 Mar 2017 05:01:57 -0700 (PDT)
Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-oln040092253058.outbound.protection.outlook.com [40.92.253.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DEB701296AF; Fri, 24 Mar 2017 05:01:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=wicQHAL3XabjFaB1ncgWjy9DE3kJvBVKZ2K3h2lhu78=; b=obT5XYxZF2fvF5pWnntz6ThyJ25c3/qR+Yaz3/V3v8L91IPW/Dayq/0PwUAIuVibEkR+i+MNFOF2gHZbYq7Trkog7NiVFjp1mx9q9VoXE23xXg32FxLIPX8iglmZ0Q/NFbxulDFqs//oseZW6uIOmbhPwECROZToc4Z14dZN6yZKMmsRkwsroYLGBY3iTk5rZZmo8yvm3RnyBydxYqMqEOvyLR2QP2ggE6WfXs06CaGamOf7FTdFGkjRu4I4DEQIs5rzHbFI3tfOGihzHjK5BErjEhX135MCehrxt4X/LEL51CK8NJaFxMtF0sVeo5V8Ji7rdFAwGuA0U7n7ao7nfw==
Received: from SG2APC01FT009.eop-APC01.prod.protection.outlook.com (10.152.250.51) by SG2APC01HT032.eop-APC01.prod.protection.outlook.com (10.152.251.1) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.7; Fri, 24 Mar 2017 12:01:53 +0000
Received: from TY1PR04MB0656.apcprd04.prod.outlook.com (10.152.250.60) by SG2APC01FT009.mail.protection.outlook.com (10.152.250.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.977.7 via Frontend Transport; Fri, 24 Mar 2017 12:01:53 +0000
Received: from TY1PR04MB0656.apcprd04.prod.outlook.com ([10.163.246.157]) by TY1PR04MB0656.apcprd04.prod.outlook.com ([10.163.246.157]) with mapi id 15.01.0977.021; Fri, 24 Mar 2017 12:01:53 +0000
From: Dawn Chan <dawn_chen_f@hotmail.com>
To: "Y. Richard Yang" <yry@cs.yale.edu>, "jingxuan.n.zhang@gmail.com" <jingxuan.n.zhang@gmail.com>
CC: "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>
Thread-Topic: Design issue on path vector
Thread-Index: AQHSomRF1IdmzCY0/0OSyGBvWoXSaqGhQtmAgADESYCAASEjgIAAv7oA
Date: Fri, 24 Mar 2017 12:01:52 +0000
Message-ID: <TY1PR04MB06567D69F38FAE63B6B35160B53E0@TY1PR04MB0656.apcprd04.prod.outlook.com>
References: <TY1PR04MB065600AD703BAEC14FC7D27DB53D0@TY1PR04MB0656.apcprd04.prod.outlook.com> <CANUuoLoQa-HhQcdKma5+6iUwY7-oXBoqt02OntU6ym-mM+LFcQ@mail.gmail.com> <CAAbpuyo7x2q=B3FU6kdm8mckg744n=dLYmgJaeUfnaHLCnLzzA@mail.gmail.com> <CANUuoLqXUkxjoKr-8Cqw+67vGn4KvLiMMKYQ7OvUsm0BcF3QMw@mail.gmail.com>
In-Reply-To: <CANUuoLqXUkxjoKr-8Cqw+67vGn4KvLiMMKYQ7OvUsm0BcF3QMw@mail.gmail.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=hotmail.com;
x-incomingtopheadermarker: OriginalChecksum:BA5A383E1426596C008C4B836A8707285644FF2082F93E089DF891F0E21387A9; UpperCasedChecksum:A59C5286B900CBE26FE8430B1C02D4D719A4B76D5FEE89EF52F1412626B4AF96; SizeAsReceived:8462; Count:40
x-ms-exchange-messagesentrepresentingtype: 1
x-microsoft-exchange-diagnostics: 1; SG2APC01HT032; 5:gdTjhICYY6Nb5M0tFaV2NiLO+WHl5zGtTo7JpjBm6LJGnyBHWn92+UREwgSNqWMRd80PQWNVzWB62g1rrOA3n+GcMn87flpnHALItv+5Lhq0UMdUu+0DFz2G+LnfQV0LpVy3mMrLSdCwEx2u3O5aVw==; 24:5ggVZrljtsJvucY2qPD35sPn18AnKfOi/OTQasD26QCA7tp13OGbL6UqGnUmKADjxl/tgpqlfqbZuaAktEPW1bAVe8bf6YLjY+SlJdrwuqo=; 7:h5B9EyuzNCwpJ87J7anl6LCF/KMSrmWYSn7KcVvQX0wjYjXXbbH2slp6Ob+JV77Cf0EOj365/LYDLU6PmJmrHXJfeNS4PKd8O6d7BCKU6Vu79mh+yhgvyU4mbsWEmPKBJqThyEwvSJS3Fuf/WOTfHCEvWNHNkr5SKo75e/C8WtDWwYjrC9fVoVajNosym/PypmqiEmmwAiBftslppMhAYL5Y2Gh6uTtZA1AFs7RRFhcmGoO1Nu3rmJ3Nl7rarKOMgy92wiVAbBPfZsNrv5KG8nHuIdlEgR4Bw7bmR6fqyUFHK7w8n9S4Qlo9kRAYD0Ju
x-incomingheadercount: 40
x-eopattributedmessage: 0
x-forefront-antispam-report: EFV:NLI; SFV:NSPM; SFS:(7070007)(98900017); DIR:OUT; SFP:1901; SCL:1; SRVR:SG2APC01HT032; H:TY1PR04MB0656.apcprd04.prod.outlook.com; FPR:; SPF:None; LANG:en;
x-ms-office365-filtering-correlation-id: 0ba14c39-6306-452f-13c7-08d472ad8dce
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031322274)(1603101448)(1601125374)(1701031045); SRVR:SG2APC01HT032;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(444000031); SRVR:SG2APC01HT032; BCL:0; PCL:0; RULEID:; SRVR:SG2APC01HT032;
x-forefront-prvs: 0256C18696
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_TY1PR04MB06567D69F38FAE63B6B35160B53E0TY1PR04MB0656apcp_"
MIME-Version: 1.0
X-OriginatorOrg: hotmail.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2017 12:01:52.9410 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Internet
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2APC01HT032
Archived-At: <https://mailarchive.ietf.org/arch/msg/alto/UGc5v3twHfN2K6BH-RvBBIK1pr4>
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 12:02:00 -0000

Hi Richard, Jensen

Thanks for your new ideas, please see my comments inline.

On Mar 24, 2017, at 8:35 AM, Y. Richard Yang <yry@cs.yale.edu<mailto:yry@cs.yale.edu>> wrote:

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.


I think this design idea is quite similar to what Jensen posted previously. That is, the “resource-id” of a nep-map is fixed but the nep-map itself is dynamic. To distinguish the network elements names between different queries, the names in the nep-map uses different prefixes
of ane names to ensure there is no same ane name in different responses, but this design idea doesn’t require new field name.

Also, since the nep-map will be enriched when new queries appear, the “tag” field in “dependent-vtags” is useless to reference the nep-map, right?

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

I think no more capabilities are needed here. From the “uses” field, the client can get the information about what property types the nep-map resource support, so we don’t need to list the property types in the ECS’s capabilities, right?

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