73 | | |
| 73 | == container_image.py == |
| 74 | |
| 75 | The {{{container_image.py}}} command draws a picture of the topology of an experiment. This is helpful in keeping track of how virtual nodes are connected. {{{containerize.py}}} calls this internally and stores the output in the [ReferenceGuide#Per-ExperimentDirectory per-experiment directory] (unless {{{--no-image}}} is used. |
| 76 | |
| 77 | A researcher may call {{{container_image.py}}} directly to generate an image later or to generate one with the partitioning drawn. |
| 78 | |
| 79 | The simplest way to call {{{container_image.py}}} is: |
| 80 | |
| 81 | {{{ |
| 82 | /share/containers/container_image.py topology.xml output.png |
| 83 | }}} |
| 84 | |
| 85 | The first parameter is a [http://fedd.deterlab.net/wiki.TopDl topdl] description, for example the one in the [ReferenceGuide#Per-ExperimentDirectory per-experiment directory]. The second parameter is the output file for the image. When drawing an experiment that has been containerized, the {{{--experiment}}} option is very useful. |
| 86 | |
| 87 | Options include: |
| 88 | |
| 89 | {{{--experiment=}}}''project''/''experiment'':: |
| 90 | Draw the experiment in ''project''/''experiment'', if it exists. Note that this is just DETER experiment and DETER project. Omit any sub-group. |
| 91 | {{{--topo=}}}''filename'':: |
| 92 | Draw the topology in ''filename'' |
| 93 | {{{--attr-prefix=}}}''prefix'' |
| 94 | Prefix for containers attributes. Deprecated. |
| 95 | {{{--partitions}}}:: |
| 96 | Draw labeled boxes around nodes that share a physical node. |
| 97 | {{{--out=}}}''filename'':: |
| 98 | Save the image in ''filename'' |
| 99 | |
| 100 | If neither {{{--topo}}} nor {{{--experiment}}} is given, the first positional parameter is the topdl topology to draw. If {{{--out}}} is not given the next positional parameter (the first if {{{--topo}}} nor {{{--experiment}}} is given) is the output file. |
| 101 | |
| 102 | A common invocation looks like: |
| 103 | |
| 104 | {{{ |
| 105 | /share/containers/container_image.py --experiment SAFER/testbed-containers ~/drawing.png |
| 106 | }}} |
| 107 | |
| 108 | |
| 109 | == Per-experiment Directory == |
122 | | Because of a bug in their internal routing, multi-homed processes do not respond correctly |
| 158 | Because of a bug in their internal routing, multi-homed processes do not respond correctly for requests on some interfaces. A ViewOS process does not recognize its other addresses when a packe arrives on a different interface. A picture makes this clearer: |
| 159 | |
| 160 | [[Image(viewos.png)]] |
| 161 | |
| 162 | Container A can ping Interface X (10.0.0.1) of the ViewOS container successfully, but if Container A tries to ping Interface Y (10.0.1.2) the ViewOS container will not reply (in fact it will send ARP requests on Interface Y looking for its own address). |
| 163 | |
| 164 | ViewOS processes are best used as lightweight forwarders for this reason. |
| 165 | |
| 166 | === Physical Nodes === |
| 167 | |
| 168 | Physical nodes can be incorporated into experiments, but should only use modern versions of Ubuntu, to allow the container system to run their start commands correctly and to initialize their routing tables. |