|
|
The *control network* is the source of a number of problems related to the
|
|
|
behavior of network links in an experiment. In this entry, we attempt to
|
|
|
explain exactly what the control network is, why problems occur, and how to
|
|
|
avoid them.
|
|
|
|
|
|
Every physical node in the testbed has one interface connected to a common
|
|
|
LAN. This interface is used by the testbed infrastructure to configure
|
|
|
experiments (e.g. distribute account info, load disks, etc.). It is also
|
|
|
used by the experimenter to communicate with the nodes from outside Emulab
|
|
|
(e.g., ssh). Finally, it may be used by an experimenter to monitor activity
|
|
|
during an experiment. Control net links have a fixed address and are not
|
|
|
configured by the user. The control network is differentiated from the
|
|
|
*experimental* network which is the set of links specified in the
|
|
|
experiment topology over which experiment applications should
|
|
|
communicate. Experiment links are configured by the user and may be shaped
|
|
|
and otherwise controlled by that user. To illustrate the difference,
|
|
|
consider the simple two-nodes-and-a-router described by the this fragment:
|
|
|
|
|
|
```
|
|
|
node1 = request.RawPC("node1")
|
|
|
router = request.RawPC("router")
|
|
|
node2 = request.RawPC("node2")
|
|
|
|
|
|
linkA = request.Link("linkA", (node1, router));
|
|
|
linkB = request.Link("linkB", (node2, router));
|
|
|
|
|
|
# Set the latency on the links (in milliseconds)
|
|
|
linkA.latency = 10
|
|
|
linkB.latency = 10
|
|
|
```
|
|
|
|
|
|
which is instantiated (in red) in the following figure:
|
|
|
|
|
|
![control-net](/uploads/b1817366237c25fe40d5e56f61c9cd4a/control-net.png)
|
|
|
|
|
|
|