[Nml-wg] XML Examples and Proposals

Aaron Brown aaron at internet2.edu
Wed Mar 14 08:05:53 EDT 2012


Hey Freek,

You've convinced me :) I'm happy with a version and a lifetime element, as long as they only apply to the current element, and not to other somehow-related elements. It'd probably be good if the version element functioned as a "created" timestamp so you can figure out when the new version of an element came into existence. This would allow easier post-mortems of network state.

Cheers,
Aaron

On Mar 13, 2012, at 6:42 PM, Freek Dijkstra wrote:

> Hi Aaron,
> 
> Thanks for your constructive mail.
> 
>> 1) do we have an element with both a start time and an end time, or do
>> we have an element with just a start time (where the start time could
>> simply be relative to the previous start time, and have no meaning
>> outside of the version numbers)
>> 2) do the values in that element apply to just the network element it is
>> contained in, or to all the network elements that are contained in that
>> network element
>> 
>> The lifetime object as currently proposed implies that the answer to 1)
>> is start/end time, and 2) that it only applies to the current network
>> element
>> The version object that freek is proposing implies that the answer to 1)
>> is just start time, and 2) that it applies to all elements contained in
>> that network element
> 
> Good analysis, we agree on this.
> 
>> The problem I see with the 'version' proposal is that contained-in is
>> just one type of relationship between elements.
> 
> While formulating an answer, I found it problematic to come to a simple
> answer where the version or lifetime would not apply to the top level
> element, but also to the childs elements. Perhaps it is easier to simply
> say that a version or lifetime only applies to the object and it's
> attributes, but not to it's child elements.
> 
> There are two arguments for this. You already mentioned the argument
> that it is unclear if a refId is a child or not; another argument is
> that it is unclear if a parent element no longer included a child: does
> that mean that the child's lifetime is ended, or that there simply is no
> update.
> 
> Example:
>  Topo v=1
>    Node A
>    Node B
>    Node C
> 
>  Topo v=2
>    Node A
>    Node B
>    Node D
> 
> Does this mean that Node C is gone, or that this is some abstracted
> topology, and that Node C is simply not mentioned here (perhaps this
> topology has >1000 Nodes, and this is just some abstracted view).
> In this case a Lifetime object for Node C would make things explicit, (I
> can also see some clever hack where version is used to denote this
> information, but Lifetime is the better choice here).
> 
> 
> So far you've convinced me that the Lifetime object has its merits.
> Good. You still have not convinced that we can get rid of the version
> attribute.
> 
> 
> Let me first answer your question though:
> 
>> Topology vT1
>>  - Node A
>>  - Node B
>> 
>> Reservation vV1 - [...]
>> - p(Node A)
>> - p(Node B)
>> 
>> Topology vT2
>>  - Node A
>>  - Node B (changed)
>> 
>> In this example, a Reservation was made using Topology version T1. After
>> the reservation was made, and saved elsewhere, the Topology is changed
>> properties of Node B. If someone is doing a post-mortem of Reservation
>> vV1, which Topology should they be looking at to resolve the pointer for
>> Node B?
> 
> They should look at Topology vT2 for the attributes of Node B after
> t > T2.
> 
> This is exactly the same as with a lifetime object, only (slightly) more
> verbose:
> 
> Topology X
>   lifetime start=T1, end=T2
>   - Node A
>   - Node B
> 
> Reservation vV1 - [...]
>  - p(Node A)
>  - p(Node B)
> 
> Topology X
>   lifetime start=T2, end=<undefined>
>   - Node A
>   - Node B (changed)
> 
> In the above, we applied the exact same semantics to `version=T` as to
> `lifetime(start=T, end=<undefined>)`. So this is interchangable, and
> poses not pro or con against one or the other proposal (well, lifetime
> is more flexible because it has an end-time, version is shorter and the
> terminology seem to match closer tot the usage here. That has been
> argued before)
> 
> 
> I can conclude that the lifetime object and version object can be used
> interchangeably in the above example.
> 
> Nice, but let's now turn to the example Jeroen and I gave.
> 
> 
> The above is _not_ Jeroen's example. The example above changed Node B,
> Jeroen's changed the reservation time of the Reservation:
> 
>> telco: "Here is your link reservation, it's from 2 to 4 tomorrow"
>> user: "thanks, I found out I need it a bit longer, can you extend my
>> reservation?"
>> telco: "Sure, here is an update of your reservation. it's now from 2 to
>> 5 tomorrow"
>> user: "great"
> 
> As a schema:
> 
> Reservation id=R version=1
>   lifetime(start=2:00 end=4:00)
>   p(Node A)
>   p(Node B)
> 
> Reservation id=R version=2
>   lifetime(start=2:00 end=5:00)
>   p(Node A)
>   p(Node B)
> 
> As you see I need both the version AND lifetime object to convey this
> message.
> 
> Now you seem to argue that it is possible to represent this using only
> the lifetime object. Unfortunately, I seem to fail to see how.
> Could you write down how you anticipate these message looks like using
> only the lifetime object?
> 
> Lacking that example, I still think we need both a Lifetime object and a
> version attribute.
> 
> Thanks,
> Freek

Internet2 Spring Member Meeting
April 22-25, 2012 - Arlington, Virginia
http://events.internet2.edu/2012/spring-mm/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/nml-wg/attachments/20120314/ecba26de/attachment-0001.html>


More information about the nml-wg mailing list