[Nml-wg] Serial compound relations

Aaron Brown aaron at internet2.edu
Mon Dec 13 16:43:13 CST 2010


On Dec 13, 2010, at 5:31 PM, Freek Dijkstra wrote:

> Hey Jason,
> 
> Excellent discussion.
> 
> I attached the original example again, with one small change: segmentBC
> is now part of domain "example.org" instead of "example.net".
> 
> Remember, there are two distinct ways in the XML to "trace" the original
> path:
> - Using ports (if the sink of link A is port X, and the source
>   of link B is also port X, you know that links A and B are
>   connected in series)
> - Using explicit ordering (either order="1", order="2" or hop/nextHop).
> 
> Could you confirm that you want to see BOTH approaches in NML?
> (I think there are use cases for both.)
> 
> We're currently focussing on the second way. Let's continue that.
> 
>> I would vote for Aaron's proposal that I listed out in one of 
>> the first mails (no longer in this tread for some reason) to use pointer 
>> elements instead of count/type elements.  I believe that respects the 
>> original hop/path idea a little closer.  If the existing tooling can 
>> deal with a concept that 'follows' a path, that's a strong argument to 
>> remain with it even if the syntax changes slightly.
> 
> Could you rewrite the attached example to use the hop/nextHop approach?
> I think we should write both down in detail, and if we're happy with
> both examples, we should ask the group to vote (I currently have no
> preference).

Since I proffered the proposal, I'll take a cut at rewriting. The only big thing that would change is in the end-to-end "link" element:

Original:

<nml:link type="link" nm:id="urn:ogf:network:example.net:pathAC">
    <nml:relation type="serialcompound" cl:count="3">
        <nml:link nm:idRef="urn:ogf:network:example.net:segmentAB" cl:order="1"/>
        <nml:link nm:idRef="urn:ogf:network:example.net:crossconnect4-1_5-2" cl:order="2"/>
        <nml:link nm:idRef="urn:ogf:network:example.org:segmentBC" cl:order="3"/>
    </nml:relation>
</nml:link>

Modified:

<nml:link type="link" nm:id="urn:ogf:network:example.net:pathAC">
    <nml:relation type="serialcompound" cl:count="3">
        <nml:link nm:id="l1" nm:idRef="urn:ogf:network:example.net:segmentAB">
           <nml:relation type="next-hop">
               <link nm:idRef="l2" />
           </nml:relation>
        </nml:link>
        <nml:link nm:id="l2" nm:idRef="urn:ogf:network:example.net:crossconnect4-1_5-2">
           <nml:relation type="next-hop">
               <link nm:idRef="l3" />
           </nml:relation>
        </nml:link>
        <nml:link nm:id="l3" nm:idRef="urn:ogf:network:example.org:segmentBC" />
    </nml:relation>
</nml:link>

This model could be extended beyond a simple ordered list to trees or other structures as well by introducing new relationships beyond "next-hop". I will note though that 'next-hop' is just an example name, and we should probably think about a more appropriate relation name.

Cheers,
Aaron

> Regarding the id/idRef distinction, I probably understand what you're
> saying in text, but I can't translate this to XML. Both statements below
> make sense, but they still seem to clash.
> 
>> Typically 'id' is the definition of something, 'idRef' is used as a 
>> pointer to something previously defined. [...]
> 
> 
> Let's take the example that domain example.org wants to say
> "urn:ogf:network:example.org:segmentBC is a segment of the end-to-end
> link urn:ogf:network:example.net:pathAC, but I don't know the names of
> other segments of this path".
> 
> If I follow the above statement, I'm inclined to write:
> 
> <nml:link id="urn:ogf:network:example.net:pathAC">
>   <nml:relation type="serialcompound">
>     <nml:link idRef="urn:ogf:network:example.org:segmentBC"/>
>   </nml:relation>
> </nml:link>
> 
> <nml:link idRef="urn:ogf:network:example.org:segmentBC">
>   <!-- more properties of this link -->
> </nml:link>
> 
>> Following these examples, I would claim that if some domain defines/owns 
>> an object, such as a link, they get to assign the 'id' field.  If this 
>> is a GLIFesq definition I would assume this gives it a global scope.
>> 
>> For any other use that wishes to reference this original, there needs to 
>> be a clear semantic meaning that we are not trying to define (or 
>> re-define) the original.  In the case of an end to end path that is 
>> using several links that belong to others (e.g. the control plane 
>> world), I am suggesting that if you intend to reference the individual 
>> components of the entire path, it is necessary to use idRefs instead of 
>> ids.
> 
> However, following the above text, example.org can only use the id
> attribute for it's own links, and should use idRef for the end-to-end
> link defined by example.net:
> 
> <nml:link idRef="urn:ogf:network:example.net:pathAC">
>   <nml:relation type="serialcompound">
>     <nml:link id="urn:ogf:network:example.org:segmentBC"/>
>   </nml:relation>
> </nml:link>
> 
> (Obviously if example.net would announce the very same information, the
> id and idRef would flip in this example.)
> 
> Which one did you mean?
> 
> Regards,
> Freek
> 
> 
> 
> (PS: I trimmed the cc with people who are already on the NML mailing
> list. I also increased the cc limit, this should stop the bounces.)
> <serial_compound.xml><serial compound.png>_______________________________________________
> nml-wg mailing list
> nml-wg at ogf.org
> http://www.ogf.org/mailman/listinfo/nml-wg



More information about the nml-wg mailing list