
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