From: Alina Quereilhac Date: Sun, 14 Apr 2013 18:04:16 +0000 (+0200) Subject: Adding ICN PlanetLab large experiment scenarios X-Git-Tag: nepi-3.0.0~124 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=70c33a3b0fe396cce12d3d1c0eb6cf40ce537a95;p=nepi.git Adding ICN PlanetLab large experiment scenarios --- diff --git a/examples/streamming/planetlab_ccn_vlc.py b/examples/streaming/ccn_broadcast.py similarity index 61% rename from examples/streamming/planetlab_ccn_vlc.py rename to examples/streaming/ccn_broadcast.py index 95587e22..deb306fa 100644 --- a/examples/streamming/planetlab_ccn_vlc.py +++ b/examples/streaming/ccn_broadcast.py @@ -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 diff --git a/examples/streamming/planetlab_multiple_vlc.py b/examples/streaming/vlc_broadcast.py similarity index 66% rename from examples/streamming/planetlab_multiple_vlc.py rename to examples/streaming/vlc_broadcast.py index d3da14dc..c976160e 100644 --- a/examples/streamming/planetlab_multiple_vlc.py +++ b/examples/streaming/vlc_broadcast.py @@ -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 diff --git a/src/nepi/testbeds/planetlab/node.py b/src/nepi/testbeds/planetlab/node.py index bc262522..a924e125 100644 --- a/src/nepi/testbeds/planetlab/node.py +++ b/src/nepi/testbeds/planetlab/node.py @@ -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 } diff --git a/src/nepi/util/server.py b/src/nepi/util/server.py index 128ea454..ed9bccd3 100644 --- a/src/nepi/util/server.py +++ b/src/nepi/util/server.py @@ -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',