Adding ICN PlanetLab large experiment scenarios
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Sun, 14 Apr 2013 18:04:16 +0000 (20:04 +0200)
committerAlina Quereilhac <alina.quereilhac@inria.fr>
Sun, 14 Apr 2013 18:04:16 +0000 (20:04 +0200)
examples/streaming/ccn_broadcast.py [moved from examples/streamming/planetlab_ccn_vlc.py with 61% similarity]
examples/streaming/vlc_broadcast.py [moved from examples/streamming/planetlab_multiple_vlc.py with 66% similarity]
src/nepi/testbeds/planetlab/node.py
src/nepi/util/server.py

similarity index 61%
rename from examples/streamming/planetlab_ccn_vlc.py
rename to examples/streaming/ccn_broadcast.py
index 95587e2..deb306f 100644 (file)
@@ -27,7 +27,8 @@ class MonitorInfo(object):
         self.hostname = hostname
         self.type = type
         self.cpumem_monitor = None
-        self.net_monitor = None
+        self.net_out_monitor = None
+        self.net_in_monitor = None
         self.ccnd = None
         self.ccncat = None
         self.ccnseqwriter = None
@@ -64,10 +65,11 @@ def create_node(hostname, pl_inet, slice_desc):
 def create_ccnd(pl_node, slice_desc, pl_ifaces, port):
     pl_app = slice_desc.create("CCNxDaemon")
     pl_app.set_attribute_value("ccnxVersion", "0.7.1")
+    pl_app.set_attribute_value("repository", True)
     
     # We use a wildcard to replace the public IP address of the node during runtime,
     # once this IP is known
-    routes = "|".join(map(lambda pl_iface: "udp {#[%s].addr[0].[Address]#}" % 
+    routes = "|".join(map(lambda pl_iface: "ccnx:/ udp {#[%s].addr[0].[Address]#}" % 
         pl_iface.get_attribute_value("label"), pl_ifaces))
     
     # Add unicast ccn routes 
@@ -86,7 +88,7 @@ def create_ccnpush(movie, pl_node, slice_desc, port):
     pl_app = slice_desc.create("Application")
     pl_app.set_attribute_value("stdin", movie)
 
-    command = "ccnseqwriter ccnx:/VIDEO"
+    command = "ccnseqwriter -r ccnx:/VIDEO"
     if port:
         command = "CCN_LOCAL_PORT=%d %s " % (port, command)
 
@@ -102,11 +104,13 @@ def create_ccnpull(pl_node, slice_desc, port):
     pl_app.set_attribute_value("rpmFusion", True)
     pl_app.set_attribute_value("depends", "vlc")
 
-    command = " sudo -S dbus-uuidgen --ensure ; while true ; do ccncat ccnx:/VIDEO"
+    #command = " sudo -S dbus-uuidgen --ensure ; ccncat ccnx:/VIDEO"
+    command = " ccncat ccnx:/VIDEO"
     if port:
         command = "CCN_LOCAL_PORT=%d %s " % (port, command)
 
-    command += " | vlc -I dummy - vlc://quit > /dev/null ; done"
+    #command += " | vlc -I dummy - vlc://quit > /dev/null "
+    command += " > /dev/null "
     pl_app.set_attribute_value("command", command)
     
     pl_app.enable_trace("stdout")
@@ -129,8 +133,8 @@ def create_cpumem_monitor(pl_node, slice_desc):
     pl_node.connector("apps").connect(pl_app.connector("node"))
     return pl_app
 
-def create_net_monitor(pl_node, slice_desc, pl_ifaces):
-    label = "%d_net" % pl_node.guid
+def create_net_monitor(pl_node, slice_desc, pl_ifaces, lblprefix = "any", pcap=False):
+    label = "%d_%s_net" % (pl_node.guid, lblprefix)
     hosts = " or ".join(map(lambda pl_iface: " ( host {#[%s].addr[0].[Address]#} ) " % 
         pl_iface.get_attribute_value("label"), pl_ifaces))
     pl_app = slice_desc.create("Application")
@@ -138,9 +142,18 @@ def create_net_monitor(pl_node, slice_desc, pl_ifaces):
     pl_app.set_attribute_value("rpmFusion", True)
     pl_app.set_attribute_value("sudo", True)
     pl_app.set_attribute_value("depends", "tcpdump pv")
+
+    output = "/dev/null"
+    if pcap:
+        output = "{#[%s].trace[output].[name]#}" % label
+
     pl_app.set_attribute_value("command", 
-            "tcpdump -l -i eth0 -nNqttf '(%s)' -w - | pv -fbt >/dev/null 2>>{#[%s].trace[stdout].[name]#}" %
-            (hosts, label))
+            "tcpdump -l -i eth0 -s 0 -f '(%s)' -w - | pv -fbt >%s 2>>{#[%s].trace[stdout].[name]#}" %
+            (hosts, output, label))
+
+    if pcap:
+        pl_app.enable_trace("output")
+    
     pl_app.enable_trace("stdout")
     pl_app.enable_trace("stderr")
     pl_node.connector("apps").connect(pl_app.connector("node"))
@@ -171,21 +184,35 @@ def store_results(controller, monitors, results_dir, exp_label):
             pass
 
         # store monitoring results
-        cpumem_stdout = controller.trace(mon.cpumem_monitor.guid, "stdout")
-        net_stdout = controller.trace(mon.net_monitor.guid, "stdout")
-        ccnd_error = controller.trace(mon.ccnd.guid, "stderr")
+        cpumem_out = controller.trace(mon.cpumem_monitor.guid, "stdout")
+        
+        net_in = None
+        if mon.net_in_monitor:
+            net_in = controller.trace(mon.net_in_monitor.guid, "stdout")
+        
+        net_out = None
+        if mon.net_out_monitor:
+            net_out = controller.trace(mon.net_out_monitor.guid, "stdout")
 
-        ccncat_error = None
+        ccnd_err = controller.trace(mon.ccnd.guid, "stderr")
+        ccnd_out = controller.trace(mon.ccnd.guid, "stdout")
+        
+        ccncat_err = None
         if mon.ccncat:
-            ccncat_error = controller.trace(mon.ccncat.guid, "stderr")
+            ccncat_err = controller.trace(mon.ccncat.guid, "stderr")
 
-        ccnseqwriter_error = None
+        ccnseqwriter_err = None
         if mon.ccnseqwriter:
-            ccnseqwriter_error = controller.trace(mon.ccnseqwriter.guid, "stderr")
+            ccnseqwriter_err = controller.trace(mon.ccnseqwriter.guid, "stderr")
         
-        results = dict({"cpumem": cpumem_stdout, "net": net_stdout, 
-            "ccnd_stderr": ccnd_error, "ccncat_stderr": ccncat_error,
-            "ccnseqwriter_stderr": ccnseqwriter_error })
+        results = dict({
+            "cpumem": cpumem_out, 
+            "net_in": net_in, 
+            "net_out": net_out, 
+            "ccnd_err": ccnd_err, 
+            "ccnd_out": ccnd_out, 
+            "ccncat_err": ccncat_err,
+            "ccnseqwriter_err": ccnseqwriter_err })
 
         for name, result in results.iteritems():
             if not result:
@@ -236,7 +263,7 @@ def get_options():
             help="Path to directory to store results", type="str")
     parser.add_option("-l", "--label", dest="exp_label", default = exp_label, 
             help="Label to identify experiment results", type="str")
-    parser.add_option("-t", "--time", dest="time_to_run", default = 1
+    parser.add_option("-t", "--time", dest="time_to_run", default = 20
             help="Time to run the experiment in hours", type="float")
     parser.add_option("-P", "--port", dest="port", 
             help="Port to bind the CCNx daemon", type="int")
@@ -288,24 +315,27 @@ if __name__ == '__main__':
     l1_hostnames["es"] = "planetlab1.um.es"
     l1_hostnames["pt"] = "planetlab-um10.di.uminho.pt"
     l1_hostnames["pl"] = "pandora.we.po.opole.pl"
-    l1_hostnames["it"] = "gschembra4.diit.unict.it"
+    l1_hostnames["it"] = "planetlab02.dis.unina.it"
     l1_hostnames["de"] = "planetlab2.wiwi.hu-berlin.de"
-    l1_hostnames["fr"] = "planetlab1.u-strasbg.fr"
+    l1_hostnames["fr"] = "planetlab2.u-strasbg.fr"
     l1_hostnames["gr"] = "planetlab1.ics.forth.gr"
-    l1_hostnames["ch"] = "planetlab2.unineuchatel.ch"
+    l1_hostnames["ch"] = "lsirextpc02.epfl.ch"
+    l1_hostnames["uk"] = "planetlab2.aston.ac.uk"
+    l1_hostnames["be"] = "planetlab1.extern.kuleuven.be"
+
     l1_ifaces = dict()
     l1_nodes = dict()
     
     for country, hostname in l1_hostnames.iteritems():
-        pl_node, pl_iface = create_node(hostname, pl_inet, slice_desc)
-        l1_ifaces[country] = pl_iface
-        l1_nodes[country] = pl_node
+        l1_node, l1_iface = create_node(hostname, pl_inet, slice_desc)
+        l1_ifaces[country] = l1_iface
+        l1_nodes[country] = l1_node
 
     ### Level 0 - CCN & Monitoring
     
     # Add CCN Daemon to root node
-    ifaces = l1_ifaces.values()
-    root_ccnd = create_ccnd(root_node, slice_desc, ifaces, port)
+    out_ifaces = l1_ifaces.values()
+    root_ccnd = create_ccnd(root_node, slice_desc, out_ifaces, port)
 
     # Publish video in root node
     root_ccnseqwriter = create_ccnpush(movie, root_node, slice_desc, port)
@@ -316,23 +346,137 @@ if __name__ == '__main__':
    
     # Add memory and cpu monitoring for root node
     root_mon.cpumem_monitor = create_cpumem_monitor(root_node, slice_desc)
-    root_mon.net_monitor = create_net_monitor(root_node, slice_desc, ifaces)
+    root_mon.net_out_monitor = create_net_monitor(root_node, slice_desc, 
+            out_ifaces, lblprefix = "out")
     root_mon.ccnd = root_ccnd
     root_mon.ccnseqwriter = root_ccnseqwriter
 
     ### Level 2 - Leaf nodes
     l2_hostnames = dict()
-    l2_hostnames["fi"] = ["planetlab1.rd.tut.fi",]
-    l2_hostnames["se"] = ["planetlab1.s3.kth.se",]
-    l2_hostnames["es"] = ["planetlab1.tlm.unavarra.es",]
-    l2_hostnames["pt"] = ["planet1.servers.ua.pt",]
-    l2_hostnames["pl"] = ["onelab3.warsaw.rd.tp.pl",]
-    l2_hostnames["it"] = ["gschembra3.diit.unict.it",]
-    l2_hostnames["de"] = ["iraplab1.iralab.uni-karlsruhe.de",]
-    l2_hostnames["fr"] = ["host3-plb.loria.fr",]
-    l2_hostnames["gr"] = ["kostis.di.uoa.gr",]
-    l2_hostnames["ch"] = ["planetlab04.cnds.unibe.ch",]
-
+    l2_hostnames["fi"] = ["planetlab1.rd.tut.fi",
+             "planetlab-2.research.netlab.hut.fi",
+             "planetlab2.willab.fi",
+             "planetlab3.hiit.fi",
+             "planetlab4.hiit.fi",
+             "planetlab1.willab.fi",
+    ]
+
+    l2_hostnames["se"] = ["planetlab1.s3.kth.se",
+             "itchy.comlab.bth.se",
+             "planetlab-1.ida.liu.se",
+             "scratchy.comlab.bth.se",
+             "planetlab2.s3.kth.se",
+             "planetlab1.sics.se",
+    ]
+
+    l2_hostnames["es"] = ["planetlab1.tlm.unavarra.es",
+             "planetlab2.uc3m.es",
+             "planetlab2.upc.es",
+             "ait21.us.es",
+             "planetlab3.upc.es",
+             "planetlab1.uc3m.es",
+             "planetlab2.dit.upm.es",
+             "planetlab1.upc.es",
+             "planetlab2.um.es",
+    ]
+
+    l2_hostnames["pt"] = ["planet1.servers.ua.pt",
+             "planetlab2.fct.ualg.pt",
+             "planetlab-1.tagus.ist.utl.pt",
+             "planetlab-2.tagus.ist.utl.pt",
+             "planetlab-um00.di.uminho.pt",
+             "planet2.servers.ua.pt",
+    ]
+
+    l2_hostnames["pl"] = ["planetlab1.mini.pw.edu.pl",
+             "roti.mimuw.edu.pl",
+             "planetlab1.ci.pwr.wroc.pl",
+             "planetlab1.pjwstk.edu.pl",
+             "ple2.tu.koszalin.pl",
+             "planetlab2.ci.pwr.wroc.pl",
+             "planetlab2.cyfronet.pl",
+             "plab2.ple.silweb.pl",
+             "planetlab1.cyfronet.pl",
+             "plab4.ple.silweb.pl",
+             "ple2.dmcs.p.lodz.pl",
+             "planetlab2.pjwstk.edu.pl",
+             "ple1.dmcs.p.lodz.pl",
+    ]
+
+    l2_hostnames["it"] = ["gschembra3.diit.unict.it",
+             "onelab6.iet.unipi.it",
+             "planetlab1.science.unitn.it",
+             "planetlab-1.ing.unimo.it",
+             "gschembra4.diit.unict.it",
+    ]
+
+    l2_hostnames["de"] = ["iraplab1.iralab.uni-karlsruhe.de",
+             "planetlab-1.fokus.fraunhofer.de",
+             "iraplab2.iralab.uni-karlsruhe.de",
+             "planet2.zib.de",
+             "pl2.uni-rostock.de",
+             "onelab-1.fhi-fokus.de",
+             "planet2.l3s.uni-hannover.de",
+             "planetlab1.exp-math.uni-essen.de",
+             "planetlab-2.fokus.fraunhofer.de",
+             "planetlab02.tkn.tu-berlin.de",
+             "planetlab1.informatik.uni-goettingen.de",
+             "planetlab1.informatik.uni-erlangen.de",
+             "planetlab2.exp-math.uni-essen.de",
+             "planetlab2.lkn.ei.tum.de",
+             "planetlab1.wiwi.hu-berlin.de",
+             "planet1.l3s.uni-hannover.de",
+             "planetlab1.informatik.uni-wuerzburg.de",
+              "planet1.zib.de",
+    ]
+
+    l2_hostnames["fr"] = ["host3-plb.loria.fr",
+             "inriarennes1.irisa.fr",
+             "inriarennes2.irisa.fr",
+             "peeramide.irisa.fr",
+             "pl1.bell-labs.fr",
+             "pl2.bell-labs.fr",
+             "host4-plb.loria.fr",
+             "planetlab-1.imag.fr",
+             "planetlab-2.imag.fr",
+             "ple2.ipv6.lip6.fr",
+             "planetlab1.u-strasbg.fr",
+    ]
+
+    l2_hostnames["gr"] = ["kostis.di.uoa.gr",
+             "planetlab1.ionio.gr",
+             "planetlab2.ionio.gr",
+             "planetlab2.cs.uoi.gr",
+             "stella.planetlab.ntua.gr",
+             "vicky.planetlab.ntua.gr",
+             "planetlab1.cs.uoi.gr",
+             "pl002.ece.upatras.gr",
+    ]
+
+    l2_hostnames["ch"] = ["planetlab04.cnds.unibe.ch",
+             "lsirextpc01.epfl.ch",
+             "planetlab2.csg.uzh.ch",
+             "planetlab1.csg.uzh.ch",
+             "planetlab-2.cs.unibas.ch",
+             "planetlab-1.cs.unibas.ch",
+    ]
+
+    l2_hostnames["uk"] = ["planetlab4.cs.st-andrews.ac.uk",
+             "planetlab-1.imperial.ac.uk",
+             "planetlab3.xeno.cl.cam.ac.uk",
+             "planetlab1.xeno.cl.cam.ac.uk",
+             "planetlab2.xeno.cl.cam.ac.uk",
+             "planetlab3.cs.st-andrews.ac.uk",
+             "planetlab1.aston.ac.uk",
+             "planetlab1.nrl.eecs.qmul.ac.uk",
+    ]
+
+    l2_hostnames["be"] = ["chimay.infonet.fundp.ac.be",
+             "orval.infonet.fundp.ac.be",
+             "rochefort.infonet.fundp.ac.be",
+             "planck227ple.test.ibbt.be",
+    ]
+    
     for country, hostnames in l2_hostnames.iteritems():
         l2_ifaces = []
         l1_hostname = l1_hostnames[country]
@@ -340,34 +484,39 @@ if __name__ == '__main__':
         l1_node = l1_nodes[country]
         
         for hostname in hostnames:
-            pl_node, pl_iface = create_node(hostname, pl_inet, slice_desc)
-            l2_ifaces.append(pl_iface)
+            l2_node, l2_iface = create_node(hostname, pl_inet, slice_desc)
+            l2_ifaces.append(l2_iface)
+
+            in_ifaces = [l1_iface]
 
             ### Level 2 - CCN & Monitoring
         
             # Add CCN Daemon to intermediate nodes
-            ccnd = create_ccnd(pl_node, slice_desc, [l1_iface], port)
+            ccnd = create_ccnd(l2_node, slice_desc, in_ifaces, port)
 
             # Retrieve video in leaf node
-            ccncat = create_ccnpull(pl_node, slice_desc, port)
+            ccncat = create_ccnpull(l2_node, slice_desc, port)
 
             # Create monitor info object for intermediate nodes
             mon = MonitorInfo(hostname, MonitorInfo.TYPE_LEAF)
             monitors.append(mon)
        
             # Add memory and cpu monitoring for intermediate nodes
-            mon.cpumem_monitor = create_cpumem_monitor(pl_node, slice_desc)
-            mon.net_monitor = create_net_monitor(pl_node, slice_desc, [l1_iface])
+            mon.cpumem_monitor = create_cpumem_monitor(l2_node, slice_desc)
+            mon.net_in_monitor = create_net_monitor(l2_node, slice_desc, 
+                    in_ifaces, lblprefix = "in")
             mon.ccnd = ccnd
             mon.ccncat = ccncat
 
         ### Level 1 - CCN & Monitoring
 
-        ifaces = [root_iface]
-        ifaces.extend(l2_ifaces)
+        in_ifaces = [root_iface]
+        out_ifaces = l2_ifaces
+        all_ifaces = list(out_ifaces)
+        all_ifaces.extend(in_ifaces)
 
         # Add CCN Daemon to intermediate nodes
-        ccnd = create_ccnd(l1_node, slice_desc, ifaces, port)
+        ccnd = create_ccnd(l1_node, slice_desc, all_ifaces, port)
 
         # Create monitor info object for intermediate nodes
         mon = MonitorInfo(l1_hostname, MonitorInfo.TYPE_MID)
@@ -375,7 +524,10 @@ if __name__ == '__main__':
        
         # Add memory and cpu monitoring for intermediate nodes
         mon.cpumem_monitor = create_cpumem_monitor(l1_node, slice_desc)
-        mon.net_monitor = create_net_monitor(l1_node, slice_desc, ifaces)
+        mon.net_in_monitor = create_net_monitor(l1_node, slice_desc, 
+                in_ifaces, lblprefix="in")
+        mon.net_out_monitor = create_net_monitor(l1_node, slice_desc, 
+                out_ifaces, lblprefix="out")
         mon.ccnd = ccnd
 
     xml = exp_desc.to_xml()
@@ -384,7 +536,7 @@ if __name__ == '__main__':
     controller.start()
 
     start_time = time.time()
-    duration = time_to_run * 3600 # in seconds
+    duration = time_to_run * 60 # in seconds
     while not TERMINATE:
         time.sleep(1)
         if (time.time() - start_time) > duration: # elapsed time
similarity index 66%
rename from examples/streamming/planetlab_multiple_vlc.py
rename to examples/streaming/vlc_broadcast.py
index d3da14d..c976160 100644 (file)
@@ -37,7 +37,8 @@ class MonitorInfo(object):
         self.hostname = hostname
         self.type = type
         self.cpumem_monitor = None
-        self.net_monitor = None
+        self.net_in_monitor = None
+        self.net_out_monitor = None
         self.vlc = None
 
 def create_slice(exp_desc, slicename, plc_host, pl_user, pl_pwd, 
@@ -99,7 +100,7 @@ def create_vlc_client(root_node, pl_node, slice_desc):
     pl_app.set_attribute_value("depends", "vlc")
     pl_app.set_attribute_value("command",
        "sudo -S dbus-uuidgen --ensure ; sleep 5;" \
-       "vlc -I dummy --repeat rtsp://%s:8554/TEST --sout '#std{access=file,mux=ts,dst=/dev/null}'" % (hostname))
+       "vlc -I dummy rtsp://%s:8554/TEST --sout '#std{access=file,mux=ts,dst=/dev/null}'" % (hostname))
     pl_app.enable_trace("stdout")
     pl_app.enable_trace("stderr")
     pl_node.connector("apps").connect(pl_app.connector("node"))
@@ -124,7 +125,7 @@ def create_cpumem_monitor(pl_node, slice_desc):
     pl_node.connector("apps").connect(pl_app.connector("node"))
     return pl_app
 
-def create_net_monitor(pl_node, slice_desc, pl_ifaces):
+def create_net_monitor(pl_node, slice_desc, pl_ifaces, pcap=False):
     """ This function creates a monitoring application for the
     amount of bytes transmitted/received by the vlc application.
 
@@ -139,9 +140,18 @@ def create_net_monitor(pl_node, slice_desc, pl_ifaces):
     pl_app.set_attribute_value("rpmFusion", True)
     pl_app.set_attribute_value("sudo", True)
     pl_app.set_attribute_value("depends", "tcpdump pv")
+
+    output = "/dev/null"
+    if pcap:
+        output = "{#[%s].trace[output].[name]#}" % label
+
     pl_app.set_attribute_value("command", 
-            "tcpdump -l -i eth0 -nNqttf '(%s)' -w - | pv -fbt >/dev/null 2>>{#[%s].trace[stdout].[name]#}" %
-            (hosts, label))
+            "tcpdump -l -i eth0 -s 0 -f '(%s)' -w - | pv -fbt >%s 2>>{#[%s].trace[stdout].[name]#}" %
+            (hosts, output, label))
+
+    if pcap:
+        pl_app.enable_trace("output")
+    
     pl_app.enable_trace("stdout")
     pl_app.enable_trace("stderr")
     pl_node.connector("apps").connect(pl_app.connector("node"))
@@ -172,17 +182,34 @@ def store_results(controller, monitors, results_dir, exp_label):
             pass
 
         # store monitoring results
-        cpumem_stdout = controller.trace(mon.cpumem_monitor.guid, "stdout")
-        net_stdout = controller.trace(mon.net_monitor.guid, "stdout")
-        vlc_stderr = controller.trace(mon.vlc.guid, "stderr")
-
-        results = dict({"cpumem": cpumem_stdout, "net": net_stdout, 
-            "vlc_error": vlc_stderr})
+   
+        cpumem_out = controller.trace(mon.cpumem_monitor.guid, "stdout")
+
+        net_in = None
+        if mon.net_in_monitor:
+            net_in = controller.trace(mon.net_in_monitor.guid, "stdout")
+        
+        net_out = None
+        if mon.net_out_monitor:
+            net_out = controller.trace(mon.net_out_monitor.guid, "stdout")
+
+        vlc_err = controller.trace(mon.vlc.guid, "stderr")
+        vlc_out = controller.trace(mon.vlc.guid, "stdout")
+
+        results = dict({
+            "cpumem": cpumem_out, 
+            "net_in": net_in, 
+            "net_out": net_out, 
+            "vlc_out": vlc_out,
+            "vlc_err": vlc_err })
+
+        for name, result in results.iteritems():
+            if not result:
+                continue
 
-        for name, stdout in results.iteritems():
             fpath = os.path.join(node_path, name)
             f = open(fpath, "w")
-            f.write(stdout)
+            f.write(result)
             f.close()
 
     # store node info file
@@ -224,8 +251,8 @@ def get_options():
             help="Path to directory to store results", type="str")
     parser.add_option("-l", "--label", dest="exp_label", default = exp_label, 
             help="Label to identify experiment results", type="str")
-    parser.add_option("-t", "--time", dest="time_to_run", default = 1
-            help="Time to run the experiment in hours", type="float")
+    parser.add_option("-t", "--time", dest="time_to_run", default = 20
+            help="Time to run the experiment in minutes", type="float")
 
     (options, args) = parser.parse_args()
 
@@ -282,16 +309,108 @@ if __name__ == '__main__':
     cli_apps = []
     cli_ifaces = []
 
-    hostnames = ["planetlab1.rd.tut.fi", 
-            "planetlab1.s3.kth.se", 
-            "planetlab1.tlm.unavarra.es", 
-            "planet1.servers.ua.pt", 
-            "onelab3.warsaw.rd.tp.pl", 
-            "gschembra3.diit.unict.it", 
-            "iraplab1.iralab.uni-karlsruhe.de", 
-            "host3-plb.loria.fr", 
-            "kostis.di.uoa.gr", 
-            "planetlab04.cnds.unibe.ch"]
+    hostnames = ["planetlab1.rd.tut.fi",
+             "planetlab-2.research.netlab.hut.fi",
+             "planetlab2.willab.fi",
+             "planetlab3.hiit.fi",
+             "planetlab4.hiit.fi",
+             "planetlab1.willab.fi",
+             "planetlab1.s3.kth.se",
+             "itchy.comlab.bth.se",
+             "planetlab-1.ida.liu.se",
+             "scratchy.comlab.bth.se",
+             "planetlab2.s3.kth.se",
+             "planetlab1.sics.se",
+             "planetlab1.tlm.unavarra.es",
+             "planetlab2.uc3m.es",
+             "planetlab2.upc.es",
+             "ait21.us.es",
+             "planetlab3.upc.es",
+             "planetlab1.uc3m.es",
+             "planetlab2.dit.upm.es",
+             "planetlab1.upc.es",
+             "planetlab2.um.es",
+             "planet1.servers.ua.pt",
+             "planetlab2.fct.ualg.pt",
+             "planetlab-1.tagus.ist.utl.pt",
+             "planetlab-2.tagus.ist.utl.pt",
+             "planetlab-um00.di.uminho.pt",
+             "planet2.servers.ua.pt",
+             "planetlab1.mini.pw.edu.pl",
+             "roti.mimuw.edu.pl",
+             "planetlab1.ci.pwr.wroc.pl",
+             "planetlab1.pjwstk.edu.pl",
+             "ple2.tu.koszalin.pl",
+             "planetlab2.ci.pwr.wroc.pl",
+             "planetlab2.cyfronet.pl",
+             "plab2.ple.silweb.pl",
+             "planetlab1.cyfronet.pl",
+             "plab4.ple.silweb.pl",
+             "ple2.dmcs.p.lodz.pl",
+             "planetlab2.pjwstk.edu.pl",
+             "ple1.dmcs.p.lodz.pl",
+             "pandora.we.po.opole.pl",
+             "gschembra3.diit.unict.it",
+             "onelab6.iet.unipi.it",
+             "planetlab1.science.unitn.it",
+             "planetlab-1.ing.unimo.it",
+             "gschembra4.diit.unict.it",
+             "iraplab1.iralab.uni-karlsruhe.de",
+             "planetlab-1.fokus.fraunhofer.de",
+             "iraplab2.iralab.uni-karlsruhe.de",
+             "planet2.zib.de",
+             "pl2.uni-rostock.de",
+             "onelab-1.fhi-fokus.de",
+             "planet2.l3s.uni-hannover.de",
+             "planetlab1.exp-math.uni-essen.de",
+             "planetlab-2.fokus.fraunhofer.de",
+             "planetlab02.tkn.tu-berlin.de",
+             "planetlab1.informatik.uni-goettingen.de",
+             "planetlab1.informatik.uni-erlangen.de",
+             "planetlab2.exp-math.uni-essen.de",
+             "planetlab2.lkn.ei.tum.de",
+             "planetlab1.wiwi.hu-berlin.de",
+             "planet1.l3s.uni-hannover.de",
+             "planetlab1.informatik.uni-wuerzburg.de",
+             "host3-plb.loria.fr",
+             "inriarennes1.irisa.fr",
+             "inriarennes2.irisa.fr",
+             "peeramide.irisa.fr",
+             "pl1.bell-labs.fr",
+             "pl2.bell-labs.fr",
+             "host4-plb.loria.fr",
+             "planetlab-1.imag.fr",
+             "planetlab-2.imag.fr",
+             "ple2.ipv6.lip6.fr",
+             "planetlab1.u-strasbg.fr",
+             "kostis.di.uoa.gr",
+             "planetlab1.ionio.gr",
+             "planetlab2.ionio.gr",
+             "planetlab2.cs.uoi.gr",
+             "stella.planetlab.ntua.gr",
+             "vicky.planetlab.ntua.gr",
+             "planetlab1.cs.uoi.gr",
+             "pl002.ece.upatras.gr",
+             "planetlab04.cnds.unibe.ch",
+             "lsirextpc01.epfl.ch",
+             "planetlab2.csg.uzh.ch",
+             "planetlab1.csg.uzh.ch",
+             "planetlab-2.cs.unibas.ch",
+             "planetlab-1.cs.unibas.ch",
+             "planetlab4.cs.st-andrews.ac.uk",
+             "planetlab-1.imperial.ac.uk",
+             "planetlab3.xeno.cl.cam.ac.uk",
+             "planetlab1.xeno.cl.cam.ac.uk",
+             "planetlab2.xeno.cl.cam.ac.uk",
+             "planetlab3.cs.st-andrews.ac.uk",
+             "planetlab1.aston.ac.uk",
+             "planetlab1.nrl.eecs.qmul.ac.uk",
+             "chimay.infonet.fundp.ac.be",
+             "orval.infonet.fundp.ac.be",
+             "rochefort.infonet.fundp.ac.be",
+             "planck227ple.test.ibbt.be",
+            ]
+
 
     for hostname in hostnames:
         pl_node, pl_iface = create_node(hostname, pl_inet, slice_desc)
@@ -305,7 +424,7 @@ if __name__ == '__main__':
         node_mon.cpumem_monitor = create_cpumem_monitor(pl_node, slice_desc)
 
         # Add network monitoring for all nodes
-        node_mon.net_monitor = create_net_monitor(pl_node, slice_desc, [root_iface])
+        node_mon.net_out_monitor = create_net_monitor(pl_node, slice_desc, [root_iface])
 
         # Add VLC clients
         vlc = create_vlc_client(root_node, pl_node, slice_desc)
@@ -315,7 +434,8 @@ if __name__ == '__main__':
         node_mon.vlc = vlc
 
     # Add network monitoring for root node
-    root_mon.net_monitor = create_net_monitor(root_node, slice_desc, cli_ifaces)
+    #root_mon.net_monitor = create_net_monitor(root_node, slice_desc, cli_ifaces, pcap=True)
+    root_mon.net_out_monitor = create_net_monitor(root_node, slice_desc, cli_ifaces)
 
     xml = exp_desc.to_xml()
    
@@ -323,7 +443,7 @@ if __name__ == '__main__':
     controller.start()
 
     start_time = time.time()
-    duration = time_to_run * 3600 # in seconds
+    duration = time_to_run * 60 # in seconds
     while not TERMINATE:
         time.sleep(1)
         if (time.time() - start_time) > duration: # elapsed time
index bc26252..a924e12 100644 (file)
@@ -478,7 +478,7 @@ class Node(object):
                     RPM_FUSION_URL = self.RPM_FUSION_URL
                     
                 rpmFusion = (
-                  'rpm -q $(rpm -q -p %(RPM_FUSION_URL)s) || sudo -S rpm -i %(RPM_FUSION_URL)s'
+                  'rpm -q rpmfusion-free-release || sudo -S rpm -i %(RPM_FUSION_URL)s'
                 ) % {
                     'RPM_FUSION_URL' : RPM_FUSION_URL
                 }
index 128ea45..ed9bccd 100644 (file)
@@ -606,7 +606,7 @@ def popen_ssh_command(command, host, port, user, agent,
         timeout = None,
         retry = 0,
         err_on_timeout = True,
-        connect_timeout = 90,
+        connect_timeout = 60,
         persistent = True,
         hostip = None):
     """
@@ -626,7 +626,7 @@ def popen_ssh_command(command, host, port, user, agent,
         args.extend([
             '-o', 'ControlMaster=auto',
             '-o', 'ControlPath=/tmp/nepi_ssh-%r@%h:%p',
-            '-o', 'ControlPersist=90' ])
+            '-o', 'ControlPersist=60' ])
     if agent:
         args.append('-A')
     if port:
@@ -662,6 +662,11 @@ def popen_ssh_command(command, host, port, user, agent,
                 if err.strip().startswith('ssh: ') or err.strip().startswith('mux_client_hello_exchange: '):
                     # SSH error, can safely retry
                     continue
+                elif :
+                    ControlSocket /tmp/nepi_ssh-inria_alina@planetlab04.cnds.unibe.ch:22 already exists, disabling multiplexing
+                    # SSH error, can safely retry (but need to delete controlpath file)
+                    # TODO: delete file
+                    continue
                 elif retry:
                     # Probably timed out or plain failed but can retry
                     continue
@@ -734,7 +739,7 @@ def popen_scp(source, dest,
         args = ['ssh', '-l', user, '-C',
                 # Don't bother with localhost. Makes test easier
                 '-o', 'NoHostAuthenticationForLocalhost=yes',
-                '-o', 'ConnectTimeout=90',
+                '-o', 'ConnectTimeout=60',
                 '-o', 'ConnectionAttempts=3',
                 '-o', 'ServerAliveInterval=30',
                 '-o', 'TCPKeepAlive=yes',
@@ -868,7 +873,7 @@ def popen_scp(source, dest,
         args = ['scp', '-q', '-p', '-C',
                 # Don't bother with localhost. Makes test easier
                 '-o', 'NoHostAuthenticationForLocalhost=yes',
-                '-o', 'ConnectTimeout=90',
+                '-o', 'ConnectTimeout=60',
                 '-o', 'ConnectionAttempts=3',
                 '-o', 'ServerAliveInterval=30',
                 '-o', 'TCPKeepAlive=yes' ]
@@ -969,8 +974,6 @@ def popen_python(python_code,
         args = ['ssh', '-C',
                 # Don't bother with localhost. Makes test easier
                 '-o', 'NoHostAuthenticationForLocalhost=yes',
-                # XXX: Security vulnerability
-                #'-o', 'StrictHostKeyChecking=no',
                 '-o', 'ConnectionAttempts=3',
                 '-o', 'ServerAliveInterval=30',
                 '-o', 'TCPKeepAlive=yes',