X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=examples%2Fccn_emu_live%2Fdce.py;h=ef56243f4405a1653ed58da608e6db256125473b;hb=58a2b493f8df1072a1faa653c8abb6a3f9ba21fa;hp=3386e792557b6b5148d13f11320d85373d1123f8;hpb=cfc9d6fa368886787111f829ee54bc276aabc730;p=nepi.git diff --git a/examples/ccn_emu_live/dce.py b/examples/ccn_emu_live/dce.py index 3386e792..ef56243f 100644 --- a/examples/ccn_emu_live/dce.py +++ b/examples/ccn_emu_live/dce.py @@ -1,13 +1,11 @@ #!/usr/bin/env python - -############################################################################### # # NEPI, a framework to manage network experiments +# Copyright (C) 2013 INRIA # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation; # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,8 +16,8 @@ # along with this program. If not, see . # # Author: Alina Quereilhac -# -############################################################################### + +from __future__ import print_function from nepi.execution.ec import ExperimentController from nepi.execution.runner import ExperimentRunner @@ -38,13 +36,15 @@ repofile = os.path.join( os.path.dirname(os.path.realpath(__file__)), "repoFile1.0.8.2") def get_simulator(ec): - simulator = ec.filter_resources("LinuxNS3Simulation") + simulator = ec.filter_resources("linux::ns3::Simulation") if not simulator: - node = ec.register_resource("LinuxNode") + node = ec.register_resource("linux::Node") ec.set(node, "hostname", "localhost") - simu = ec.register_resource("LinuxNS3Simulation") + simu = ec.register_resource("linux::ns3::Simulation") + ec.set(simu, "enableDump", True) + ec.set(simu, "StopTime", STOP_TIME) ec.register_connection(simu, node) return simu @@ -74,12 +74,11 @@ def add_dce_ccnd(ec, nid): host = ec.netgraph.node_annotation(nid, "host") # Add dce ccnd to the dce node - ccnd = ec.register_resource("ns3::LinuxDceCCND") + ccnd = ec.register_resource("linux::ns3::dce::CCND") ec.set (ccnd, "stackSize", 1<<20) ec.set (ccnd, "debug", 7) ec.set (ccnd, "capacity", 50000) ec.set (ccnd, "StartTime", "1s") - ec.set (ccnd, "StopTime", STOP_TIME) ec.register_connection(ccnd, host) # Collector to retrieve ccnd log @@ -94,34 +93,21 @@ def add_dce_ccnr(ec, nid): host = ec.netgraph.node_annotation(nid, "host") # Add a CCN content repository to the dce node - ccnr = ec.register_resource("ns3::LinuxDceCCNR") + ccnr = ec.register_resource("linux::ns3::dce::CCNR") ec.set (ccnr, "repoFile1", repofile) ec.set (ccnr, "stackSize", 1<<20) ec.set (ccnr, "StartTime", "2s") - ec.set (ccnr, "StopTime", STOP_TIME) ec.register_connection(ccnr, host) def add_dce_ccncat(ec, nid): # Retrieve annotation from netgraph host = ec.netgraph.node_annotation(nid, "host") - ccnpeek = ec.register_resource("ns3::LinuxDceCCNPeek") - #ec.set (ccnpeek, "contentName", "ccnx:/chunk0") - ec.set (ccnpeek, "contentName", content_name) - ec.set (ccnpeek, "stackSize", 1<<20) - ec.set (ccnpeek, "StartTime", "5s") - ec.set (ccnpeek, "StopTime", STOP_TIME) - ec.register_connection(ccnpeek, host) - - collector = add_collector(ec, "stdout", nid, "peek") - ec.register_connection(collector, ccnpeek) - # Add a ccncat application to the dce host - ccncat = ec.register_resource("ns3::LinuxDceCCNCat") + ccncat = ec.register_resource("linux::ns3::dce::CCNCat") ec.set (ccncat, "contentName", content_name) ec.set (ccncat, "stackSize", 1<<20) ec.set (ccncat, "StartTime", "8s") - ec.set (ccncat, "StopTime", STOP_TIME) ec.register_connection(ccncat, host) def add_dce_fib_entry(ec, nid1, nid2): @@ -131,13 +117,12 @@ def add_dce_fib_entry(ec, nid1, nid2): ip2 = net[nid2] # Add FIB entry between peer hosts - ccndc = ec.register_resource("ns3::LinuxDceFIBEntry") + ccndc = ec.register_resource("linux::ns3::dce::FIBEntry") ec.set (ccndc, "protocol", "udp") ec.set (ccndc, "uri", "ccnx:/") ec.set (ccndc, "host", ip2) ec.set (ccndc, "stackSize", 1<<20) - ec.set (ccndc, "StartTime", "2s") - ec.set (ccndc, "StopTime", STOP_TIME) + ec.set (ccndc, "StartTime", "4s") ec.register_connection(ccndc, host1) def add_dce_net_iface(ec, nid1, nid2): @@ -177,16 +162,15 @@ def avg_interests(ec, run): ### Compute metric: Avg number of Interests seen per content name ### normalized by the number of nodes in the shortest path - content_name_count = len(content_names.values()) + content_name_count = len(content_names) nodes_in_shortest_path = len(shortest_path) - 1 metric = interest_count / (float(content_name_count) * float(nodes_in_shortest_path)) # TODO: DUMP RESULTS TO FILE # TODO: DUMP GRAPH DELAYS! - f = open("/tmp/metric", "w+") - f.write("%.2f\n" % metric) - f.close() - print " METRIC", metric + with open("/tmp/metric", "a+") as f: + f.write("%.2f\n" % metric) + print(" METRIC", metric) return metric @@ -222,16 +206,16 @@ if __name__ == '__main__': #### Create NEPI Experiment Description with LINEAR topology ec = ExperimentController("dce_ccn", topo_type = TopologyType.LINEAR, - node_count = 4, + node_count = 2, assign_st = True, assign_ips = True, add_node_callback = add_dce_node, add_edge_callback = add_dce_edge) - print "Results stored at", ec.exp_dir + print("Results stored at", ec.exp_dir) #### Retrieve the consumer to wait for ot to finish - ccncat = ec.filter_resources("ns3::LinuxDceCCNCat") + ccncat = ec.filter_resources("linux::ns3::dce::CCNCat") #### Run experiment until metric convergences rnr = ExperimentRunner()