| 29 | [[Image(Simple_topo.png)]] |
| 30 | |
| 31 | The image shows a simple topology encoded in our topology model. Computers 1,2, and 3 can communicate directly because they each have an interface on Substrate A. We omit the interface names. Computers 2 and 3 can send as fast as 1 Gb/s but experience a 10 ms delay before the first bit transmitted arrives at the receiver. Computer 1 is further constrained by its interface to a rate of 100 Mb/s, but sees the same delay. |
| 32 | |
| 33 | Computers 3 & 4 can also communicate directly over Substrate B. |
| 34 | |
| 35 | Computers 1 & 2 cannot communicate with Computer 4 unless Computer 3 forwards messages. |
| 36 | |
| 37 | This also shows the bipartite nature of the graph. Substrates (blue ellipses) are only connected to computers/elements (green rounded rectangles). All interfaces connect an element to a substrate. |
| 38 | |
| 39 | === Scaling Using Regions and Fragments === |
| 40 | |
| 41 | The basic model specifies communication networks at a fairly high degree of abstraction while maintaining mechanisms for specialization. However, large topologies present several problems: |
| 42 | |
| 43 | * Storing and transferring the entire topology can be wasteful if the researcher is only interested in manipulating or viewing parts of it |
| 44 | * There is no effective way to annotate subgraphs of the topology, though this is a natural way for researchers to specify and manipulate complex topologies |
| 45 | * There is no way to specify subgraphs of a topology beyond enumerating them |
| 46 | |
| 47 | The ''region'' element addresses these shortcomings. A region is a placeholder in a topology that stands in for a subgraph, called a ''fragment''. The region includes a natural language description of the missing subgraph and provides enough detail on how to generate the missing fragment. Note that fragments may also contain regions. |
| 48 | |
| 49 | Fragments are specified outside the topology description. In fact, a fragment is exactly a topology description, so fragments can be combined easily. |
| 50 | |
| 51 | A region specifies the fragment that it is standing in for by name. That name may be a pointer into a larger data structure that includes a fragment pool or a pointer to a service that can provide the fragment. Each region contains rules mapping the region's interfaces to elements in the fragment (of course the region's interfaces cannot be mapped to substrates in the fragment, because that would violate the bipartite rules of the graph). |
| 52 | |
| 53 | In order to keep the names unique in the fully expanded topology, each region also contains rules used to rename the fragment elements and substrates when the region is expanded. There is some complexity to this that we expand on below. |
| 54 | |
| 55 | Here is a small topology with several regions defined: |