The Makefile contained in this directory can be used by an
experimenter to dynamically create an overlay network in a PlanetLab
-slice, using the sliver-openvswitch distribution. At present, the
-Makefile only supports the creation of the basic topology (nodes and
-links).
-All the additional configuration of the bridges/switches (in
-particular, connecting the switches to OpenFlow controllers or
-enabling the Spanning Tree Protocol aka STP) has to be done using the
-tools available in the Open vSwitch distribution. This may change in
-the future.
+slice, using the sliver-openvswitch distribution.
The overlay network supported by the Makefile may consist of:
all the tap devices through the overlay network made up of Open vSwitch
bridges and tunnels among them.
+Please note that the tap device IP address is required for technical
+reasons, even if you do not plan to use it.
+
* Installation
-On each sliver we need to install sliver-openvswitch and obtain the
-following tags:
+In new slices, sliver-openvswitch comes preinstalled together with
+the vsys scripts it needs. All you have to do is ask your administrator
+for a private IP subnet for your slice.
+
+On older slices you may have to install sliver-openvswitch on each sliver
+and obtain the following tags:
NAME VALUE
vsys fd_tuntap
vsys vif_up
vsys vif_down
+vsys promisc
vsys_net (some subnet)
- (optionally) the dot program from the graphviz distribution
Then, we can simply copy the Makefile in a working directory on the
-experimenter box. The directory must also contain subdirectories 'L'
-and 'cache':
+experimenter box
$ mkdir work
$ cp /path/to/Makefile work
$ cd work
-$ mkdir -p L cache
+$ make init
+
+The last command creates some subdirectories that are later used by the Makefile.
* Example usage
-Assume we have a PlanetLab slice called 'myslice' which
+Assume we have a PlanetLab slice called 'example_slice' which
contains four nodes:
1) onelab7.iet.unipi.it
4) planetlab2.urv.cat
-Assume we have reserverd subnet 10.0.9.0/24 using vsys_net. We are
-goint to build the following overlay network:
+Assume we have obtained subnet 10.0.9.0/24 for our slice. We are
+going to build the following overlay network:
10.0.9.1/24 10.0.9.2/24 10.0.9.3/24
1 ----------- 2 ------------ 3
file containing the following variables:
----------
-SLICE=myslice
+SLICE=example_slice
HOST_1=onelab7.iet.unipi.it
IP_1=10.0.9.1/24
HOST_2=planet2.elte.hu
can test that network is up by logging into a node and pinging some
other node using the private subnet addresses:
-$ source conf.mk
-$ ssh -l $SLICE $HOST_1 ping 10.0.9.4
+$ ssh -l example_slice onelab7.iet.unipi.it ping 10.0.9.4
Links can be destroyed and created dynamically. Assume we now want the
the topology to match the following one:
|
|
|
- 4 ----------- 3
+ 4 ----------- 3
10.0.9.4/24 10.0.9.3/24
$ make graph.ps
-#### BEG WARNING xxx this feature is broken now that LINKS are defined in the same conf.mk file
-Or we can save the current state in the 'links' file (so that we can
-recreate it later):
+The current state of the nodes and links can be obtained by typing
+
+$ make snapshot > snapshot.mk
-$ ls L > links
-#### END WARNING xxx this feature is broken now that LINKS are defined in the same conf.mk file
+The snapshot.mk file follows the same format as conf.mk and can be used
+to recreate the topology at a later time:
+$ make CONF=snapshot.mk
* Command reference
-All targets can be issued with the '-j' flag to (greatly) speed up operations.
+All targets can be issued with the '-j' flag to (greatly) speed up operations (*)
It may also be useful to use the '-k' flag, so that errors on some nodes do not
stop the setup on the other nodes.
clean: tear down all existing links
-L/N1-N2: setup a link between nodes HOST_N1 and HOST_N2
+L/N1-N2: setup a link between nodes $HOST_N1 and $HOST_N2
-U/N1-N2: tear down the link (if it exists) between nodes HOST_N1
- and HOST_N2
+U/N1-N2: tear down the link (if it exists) between nodes $HOST_N1
+ and $HOST_N2
-del-bridge.N: delete the bridge running on node HOST_N (this also tears down
- all links that have an endpoint in N)
+del-bridge.N: delete the bridge running on node $HOST_N (this also tears down
+ all links that have an endpoint in $HOST_N)
graph.ps create a postscript file containing a (simple) graphical
- representation
- of the current topology
+ representation of the current topology
+
+====================================================
+
+(*) To get the greatest speedup from make -j you should also enable
+connection reuse in your ssh setup, e.g., by having the following lines
+in your .ssh/config:
+host *
+ ControlMaster auto
+ ControlPath ~/.ssh/ssh_mux_%h_%p_%r
+ ControlPersist 4h
+
+Please note, however, that maximum concurrent per-node reuse is usually
+set to something low (typically 10), and this is a problem if some node
+in your topology has many links. In this case you should raise that limit
+on the slivers, or limit makefile concurrency (e.g., by using make -j10).