Setting tag sliver-openvswitch-2.2.90-1
[sliver-openvswitch.git] / planetlab / exp-tool / README
index 641aca2..5494c0c 100644 (file)
@@ -2,14 +2,7 @@
 
 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:
 
@@ -24,16 +17,24 @@ has an IP address chosen by the experimenter. The idea is to connect
 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)
 
 
@@ -45,18 +46,19 @@ On the experimenter box we need:
 - (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
@@ -65,8 +67,8 @@ contains four nodes:
 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
@@ -81,7 +83,7 @@ In the same directory were we have put the Makefile we create a 'conf.mk'
 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
@@ -111,8 +113,7 @@ the Open vSwitch servers, create the bridges and setup the tunnels. We
 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:
@@ -122,7 +123,7 @@ the topology to match the following one:
                      |
                      |
                       |
-                     4 ----------- 3 
+                      4 ----------- 3 
                  10.0.9.4/24  10.0.9.3/24
 
 
@@ -137,17 +138,18 @@ of the topology by typing:
 
 $ 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.
 
@@ -156,14 +158,28 @@ all:              do wathever is needed to setup all the links in the 'links' file.
 
 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).