[Nml-wg] About modelisation of the network description

Aaron Brown aaron at internet2.edu
Wed Mar 5 20:32:17 CST 2008


As I was writing the replay to Freek's question and getting my ideas 
clearly stated I diverged a bit from explicitly answering questions 
asked, so this is more of my general view of "how things should look" :-)

So, if a network is a subclass of node (thing with interfaces) and a 
network can also contain arbitrary network elements. How does one view a 
network as a node?

A network in its most reasonable XML description looks like this:

<network name="internet2">
    <node name="host1">
       <port name="eth0" />
    </node>
    <node name="host2">
       <port name="eth0" />
    </node>
    <node name="host3">
       <port name="eth0" />
    </node>
</network>

A node in its most reasonable XML description looks like:

<node name="router1">
    <port name="eth0" />
    <port name="eth1" />
    <port name="eth2" />
</node>

How would a network be described as both a node and a group so that it 
can be used in either context?

<network name="internet2">
    <port name="host1_eth0" />
    <port name="host2_eth0" />
    <port name="host3_eth2" />

    <comprised-of>
        <node name="host1>
           <port name="eth0" />
        </node>
        <node name="host2>
           <port name="eth0" />
        </node>
        <node name="host3>
           <port name="eth0" />
        </node>
    </comprised-of>
</network>

Now, let's say host 1, 2 and 3 were really providing the same logical 
service (say, host1 routes web service requests back to actual services 
on hosts 2 and 3). I want a logical view of this because i don't care 
how the web service is implemented. So, do I describe it as a network? a 
device? I'd say it's a logical node in our context.

<node name="logicalWebService">
    <port name="host1_eth0" />

    <service type="http" name="moodle" />

    <comprised-of>
        <node name="host1>
           <port name="eth0" />
        </node>
        <node name="host2>
           <port name="eth0" />
        </node>
        <node name="host3>
           <port name="eth0" />
        </node>
    </comprised-of>
</node>

If one really wanted a more abstract view of the logical web service, 
you'd simply get rid of the comprised-of element:

<node name="logicalWebService">
    <port name="host1_eth0" />

    <service type="http" name="moodle" />
</node>

In the end, the full logical node definition looks (for all intents and 
purposes) identical to the network definition. Thus, I think the node 
concept lends itself nicely to a more general form of abstraction. To 
that end, is network really a special case? A network can be viewed as 
the abstract node by ignoring (or not including) the comprised-of 
portion. However, you can include those elements in it if so desired. 
Thus, whenever you're looking at a node-like element, there's a standard 
way of asking "what makes up this logical entity(domain, network, web 
service, whatever)?".

Going further, if you define a group like so:

<group name="something">
    <comprised-of>
       ... network elements ...
    </comprised-of>
</group>

Node looks to be a more specific version of group since it's a group of 
network elements (maybe none if you're at the atomic level of 
abstraction for a given topology element) that contains a set of 
external interfaces for that group of nodes.

As to the specific view/network model:

I think a view seems to be just be a restated group element. For 
example, let's say my topology includes the entire topology for 8 
domains. Why can't I create a view that comprises elements in all 8 
domains? (If, for example, I were creating a view that included all the 
PingER nodes that exist around the world).

Network seems to be 'domain inside of domain'. If I can subdivide my 
domain into 4 large networks, why can't i subdivide my networks into 
smaller networks? Relatedly, why can't a node exist in two networks at 
once? Example: layer4 overlay network or a VPN.

Other things to think about:

There are points between the domain is entirely opaque and the domain is 
entirely open:

All external nodes might be included in the description and might be 
connected via abstract links describing the logical connections between 
those points (I can get you bandwidth X across the domain if you exit 
via interface A and bandwidth Y if you exit via interface B). Does the 
"network as node" model work well for that case? In this case, you'd 
probably want to a network consisting of a set of abstract nodes 
connected via abstract links, but that shouldn't be too difficult to 
describe in this model.

I figure I'll stop typing now since I've already taken up far too much 
of your time ;)

Cheers,
Aaron


More information about the nml-wg mailing list