On Sun, Jun 30, 2013 at 11:43 PM, Richard Alimi <[email protected]> wrote:

>
> On Mon, Jun 24, 2013 at 12:19 PM, Scharf, Michael (Michael) <
> [email protected]> wrote:
>
>> I agree that in particular scenario 2 is relevant and should be addressed.
>>
>> Like Sabine, I wonder how a client would actually deal with two different
>> network maps if we don't provide any hint in the IRD (probably IRD entries
>> can be entirely optional if there is only one network map). Should the
>> client query all candidate cost maps in that case?
>>
>
> One possibility would be to first grab for the desired cost map, and then
> retrieve the network map it depends on.  There is a potential loss in
> efficiency since the client could fetch the network map and cost map in
> parallel.
>
> This seems to point in favor of listing the dependency explicitly in the
> IRD, and I'm okay with that.  IIRC, Richard Yang was in favor of this as
> well.
>
> All that said, I was sitting down to write the text, and it turns out to
> be a bit tricky.  In particular, when one specifies the URI for the network
> map in the "refers-to" attribute, which URI is it?  Is it the exact same
> URI present in the Network Map's entry in the IRD, or is it some canonical
> (absolute) URI for that Network Map resource?  If the former, then those
> URIs may be relative and this doesn't handle Scenario 1 very well.  If the
> latter, then the ALTO Server generating the IRD has to know the series of
> redirects that the client may experience (since the client may get relative
> URIs for each Information Resource, and Section 5 of RFC3986 indicates that
> the result of the relative -> absolute conversion may be dependent on
> redirects that were followed).  These solutions get to be kind of ugly.
>
> Two ideas come to mind for what we can do:
> (1) Give each Information Resource a UUID, and refer to the dependencies
> by UUID instead of a URI.
> (2) Consider the addition of metadata to the IRD to declare dependencies
> to be an extension (but we must still change Version Tags to declare the
> URI for the Network Map in the base protocol).
>
> I do think this is a nice-to-have optimization, but I don't think its
> strictly necessary to satisfy this use case.  I could be persuaded either
> way.
>
> [ The change to the Version Tags ends up being straightforward, since the
> server specifies all of them explicitly and can enforce that a single
> Network Map URI be returned; there is no ambiguity introduced by relative
> URIs in that case. ]
>

Thinking about this some more, even changing the Version Tag to have a
unique name (e.g., a UUID) instead of the Network Map URI would be quite a
bit cleaner.

Unless there are objections, I'll do the following:
(1) Give each Information Resource an 'id' attribute which is a UUID
(2) Define the 'refers-to' attribute which identifies the Information
Resource on which it depends by its UUID
(3) Define Version Tag to be:
  object {
    JSONString id;  // UUID of the network map
    JSONString tag;  // opaque identifier that changes with the version (as
we have today)
  } VersionTag;

How does this sound?
Thanks,
Rich


>
>
>> For what it is worth, at first sight, an alternative to the proposed
>> "refers-to" solution on slide 8 of the interim meeting slide deck would be
>> an extended IRD entry for each network map:
>>
>>        {
>>          "uri" : "http://alto.example.com/networkmap1";,
>>          "media-type" : "application/alto-networkmap+json",
>>          "used-by": {
>>            "http://alto.example.com/costmap/num/routingcost_lowres";
>>          }
>>        },
>>        {
>>          "uri" : "http://alto.example.com/networkmap2";,
>>          "media-type" : "application/alto-networkmap+json",
>>          "used-by": {
>>            "http://alto.example.com/costmap/num/routingcost_highres";
>>          }
>>        },
>>
>> One motivation for that syntax would be to better explain the differences
>> between the several network maps. I don't have any strong preference,
>> though.
>>
>>
> Interesting idea.  I'm trying to think about what would be more natural
> from an implementation standpoint.  If I were writing a client, I think I
> would primarily be interested in the cost map, and then I would need to
> figure out which Network Map is required to interpret that Cost Map.  From
> that standpoint, it seems like listing the dependency along with the Cost
> Map seems more natural.  I have a slight preference for the "refers-to"
> approach but beyond what I just mentioned I don't have any strong technical
> reasons.
>
>
>> Another potential solution would be to define network map capabilities
>> (such as "resolution" for scenario 2). Has this been discussed already?
>> That approach alone might not solve scenario 1.
>>
>>
> I don't think the notion of network map capabilities has been discussed
> yet, but given that we need to finish up the protocol ASAP, perhaps that
> could be an extension?
>
>
>>
>> Finally, after having re-read some parts of -16, I wonder if some
>> sections implicitly assume that there is only a single network map (notable
>> exception: Section 6.3). For instance:
>>
>> "10.1.1. Network Map
>>
>>    The Network Map Information Resource lists for each PID, the network
>>    locations (endpoints) within the PID.  It MUST be provided by an ALTO
>>    Server."
>>
>> "It" is a little bit unclear to me. More explicit would be something like
>> "An ALTO server MUST provide at least one network map."
>>
>
> Yes - agreed. We'll adjust the text here.  Thanks for pointing this out.
>
> Thanks!
> Rich
>
>
>>
>> Best regards
>>
>> Michael
>>
>>
>>
>> > -----Original Message-----
>> > From: [email protected] [mailto:[email protected]] On
>> > Behalf Of Richard Alimi
>> > Sent: Thursday, June 20, 2013 9:45 AM
>> > To: [email protected]
>> > Subject: [alto] Clarifying Cost Map Dependencies on a Network Map
>> >
>> > [ We would like to hear feedback on this.  We are planning to
>> > revise and submit a new version ASAP, so please voice
>> > opinions on this within the next few days, by Monday, June 24th. ]
>> >
>> > Background:
>> >
>> > Today, the ALTO protocol as a 'version tag' to indicate which
>> > version of a network map is used by a particular cost map.
>> >
>> > In a particularly simple case, a single ALTO server is served
>> > by a single hostname (or IP address, whatever), and it
>> > exposes a single network map and one or more cost maps.
>> > There is no ambiguity here - a client automatically knows
>> > that any version tag refers to the single network map that is
>> > hosted by the server.
>> >
>> > There are two alternate scenarios where ambiguities arrive:
>> >
>> > (Scenario 1) An IRD hosted by alto.isp1.example.com refers
>> > cost maps provided by some third-party, say
>> > alto.third-party.example.com.  In this scenario, do version
>> > tags exposed by alto.third-party.example.com correspond to
>> > the network map provided by alto.isp1.example.com?
>> >
>> > (Scenario 2) A single ALTO server (single hostname) wishes to
>> > provide two different network maps (say, different levels of
>> > aggregation) and wants to provide cost maps for each of them.
>> >  Currently, the version tag accompanying a cost map is not
>> > sufficient for a client to determine which network map a
>> > particular cost map is based on.
>> >
>> > Proposal:
>> >
>> > To resolve these problems, we'd like to propose a simple
>> > change to the version tag accompanying the cost map - it
>> > would now include the URI to the network map in addition to
>> > an opaque ID.
>> >
>> > OLD (what we have now):
>> >
>> > {
>> >  "meta" : {},
>> >  "data" : {
>> >    "cost-type" : {"cost-mode"  : "numerical",
>> >                   "cost-metric": "routingcost"},
>> >    "map-vtag"  : "1266506139",
>> >    "map" : {
>> >      "PID1": { "PID1": 1,  "PID2": 5,  "PID3": 10 },
>> >      "PID2": { "PID1": 5,  "PID2": 1,  "PID3": 15 },
>> >      "PID3": { "PID1": 20, "PID2": 15  }
>> >    }
>> >  }
>> > }
>> >
>> > NEW PROPOSAL:
>> >
>> > {
>> >  "meta" : {},
>> >  "data" : {
>> >    "cost-type" : {"cost-mode"  : "numerical",
>> >                   "cost-metric": "routingcost"},
>> >    "network-map" : {
>> >      "uri": "http://alto.example.com/networkmap1";
>> >      "vtag": "1266506139"
>> >
>> >
>> >      }
>> >    "map" : {
>> >      "PID1": { "PID1": 1,  "PID2": 5,  "PID3": 10 },
>> >      "PID2": { "PID1": 5,  "PID2": 1,  "PID3": 15 },
>> >      "PID3": { "PID1": 20, "PID2": 15  }
>> >    }
>> >  }
>> > }
>> >
>> > Compared to the current approach we have in draft -16 (which
>> > is for a version tag to be consistent within resources served
>> > by the same hostname), this has the following advantages:
>> > - It provides a more flexible solution to Scenario 1
>> > - It allows us to handle Scenario 2
>> >
>> > An possible addition to this approach would be explicitly
>> > declare the dependency between the cost map and the network
>> > map in the IRD.
>> >
>> > Feedback would be great.  The editors believe this would be a
>> > strong improvement to the draft.
>> >
>> > Thanks,
>> > Rich
>> >
>>
>
>
_______________________________________________
alto mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/alto

Reply via email to