[Nml-wg] About modelisation of the network description
Freek Dijkstra
fdijkstr at science.uva.nl
Thu Mar 6 02:12:43 CST 2008
Aaron,
That's a clear argument!
Two comments.
Aaron Brown wrote:
> 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>
I strongly oppose the above description. It mixes naming and addressing,
which is both inflexible and verbose. The following is so much better:
> <node name="router1">
> <port name="eth0" />
> <port name="eth1" />
> <port name="eth2" />
> </node>
The reason: the first description describes an object by its properties,
rather than its name. (It mixes naming and addressing). Doing so is bad.
Beside that the description is longer, it is also less flexible. For
example, what if host2 suddenly goes down, and the interface host2_eth0
is automatically flipped to host3_eth2. You probably don't want to let
your client know all these implementation details, but simply like to
refer to the same interface. So: we should name interfaces,
independently of the host they are in. The following description is
better (modification of your description):
> <network name="internet2">
> <port name="host1_eth0" />
> <port name="host2_eth0" />
> <port name="host3_eth2" />
>
> <comprised-of>
> <node name="host1">
> <port name="host1_eth0" />
> </node>
> <node name="host2">
> <port name="host2_eth0" />
> <port name="host2_eth3" />
> </node>
> <node name="host3">
> <port name="host3_eth2" />
> <port name="host3_eth4" />
> </node>
> <link name="link2-3">
> <port name="host2_eth3" />
> <port name="host3_eth4" />
> </link>
> </comprised-of>
> </network>
Note that I did name the interfaces (ports) generically. In your
previous example, there was no way of knowing that
> <port name="host1_eth0" />
was the same as
> <node name="host1">
> <port name="eth0" />
> </node>
By simply using the same name, I now can relate them. I also included
In short: name MUST NOT be context-sensitive. I think it is bad if I can
only describe an interface as "eth0 of host3 in network 8". I much
rather say interface "intf639" and only if required tell that it is in
"host3" and that "host3" is in "network8".
Of course, this requires that names are globally unique. I prefer to use
opaque names (any string, without syntax requirements), as long as it is
unique. URIs come to mind.
Second, totally different:
> 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.
This is an important one. So far, I said that I prefer that network
elements are only part of one network. That is by all means a
convention. It is useful because it makes it easy for software to
contact the domain, given a certain network element. If the network
element can be in more domain, the software does not know who to contact
at first.
Of course, you can subdivide. However, my preference at the moment is to
use different views. For example, one layer4 overlay view and a real
topology view.
This is not a strong preference though. It is just that I have not heard
enough use cases to make the relations between network element, network,
view and domain more complex than it already is in this discussion.
I let it rest for a couple of days and think about your arguments.
Regards,
Freek
More information about the nml-wg
mailing list