# log cpu% on every node cpuLogging = CPUlogApp(emu.getNodes(), 1) # setup applications based on groups established before ndn_apps = [] for server in groups: clients = groups[server] gateways = [] for client in clients: gateways.append(clientGatewayAssoc[client.getId()]) # dashproducer server_params = "--prefix /Node" + str(server.getId()) + " --document-root /home/nfd/data/concatenated/ --data-size 2048 --threads 1" # dashplayer client_params = "--name /Node" + str(server.getId()) + "/BBB_ED.mpd -r 12000 -l 500 -a buffer" if app_type == "NDN_DemoApps": # NDN_DemoApps(server, clients, start, duration, server_params, client_params, routingcmds) ndn_apps.append(NDN_DemoApps(server, clients, 0.0, 0, server_params, client_params,[])) elif app_type == "NDN_DemoAppsWLDR": # NDN_DemoAppsWLDR(server, clients, start, duration, server_params, client_params, routingcmds) ndn_apps.append(NDN_DemoAppsWLDR(server, clients, gateways, 0.0, 0, server_params, client_params, [])) else: raise ValueError("unknown application type: " + app_type) emu.addApplications([ndn_NetworkOverlay, cpuLogging] + ndn_apps) emu.start(run)
from emulation_lib.apps.udperf_app import UdperfApp from emulation_lib.linkcmd_backends.l_ import L_ emu = Emulation("../example.config.py", [0, 1]) emu.setLinkCmdBackend(L_()) n0 = emu.getNode(0) n1 = emu.getNode(1) # http://dashif.org/wp-content/uploads/2015/04/DASH-AVC-264-Test-Vectors-v09-CommunityReview.pdf nb1 = NetworkBlock("./blocks/flicflac") nb1.setNodes([n0, n1]) nb1.selectInterval(1000) emu.addNetworkBlocks([nb1]) udperf_app = UdperfApp(n1, n0, 0.0, 12, 10000, 6000, 6001) n1.addUserResult("/home/nfd/cmdScheduler.log", "cmdSched" + str(n1.getId()) + ".log_%RUN%") emu.setDuration(14) emu.addApplications([udperf_app]) emu.setName('flicflac_loss') emu.setOutputDirectory('./results/' + emu.getName()) emu.setNumberOfRuns(10) emu.setSecondsBetweenRuns(5) emu.start()
emu = Emulation("./config_files/example.config.py", [0, 1]) emu.setLinkCmdBackend(BDL_()) n0 = emu.getNode(0) n1 = emu.getNode(1) nb1 = NetworkBlock("./blocks/TwoNode_80211a_adhoc") nb1.setNodes([n0, n1]) emu.addNetworkBlocks([nb1]) udperf_app1 = UdperfApp(n0, n1, 0.0, 99, 9000, 6000, 6001) udperf_app2 = UdperfApp(n1, n0, 0.0, 99, 9000, 6000, 6001) n0.addUserResult("/home/nfd/cmdScheduler.log", "cmdSched0.log_%RUN%") n1.addUserResult("/home/nfd/cmdScheduler.log", "cmdSched1.log_%RUN%") emu.setDuration(102) emu.addApplications([udperf_app1, udperf_app2]) emu.setName('simple_sequence') emu.setNumberOfRuns(3) emu.setSecondsBetweenRuns(15) for intervalSize in [1000, 500, 250, 100]: emu.setName(intervalSize) emu.setOutputDirectory('./results/simple_sequence/' + emu.getName()) nb1.selectInterval(intervalSize) emu.start()
nb1 = NetworkBlock("./blocks/symmetric") nb1.setNodes([n0, n1]) nb1.selectInterval(1000) nb2 = NetworkBlock("./blocks/symmetric") nb2.setNodes([n2, n1]) nb2.selectInterval(1000) nb3 = NetworkBlock("./blocks/symmetric") nb3.setNodes([n3, n1]) nb3.selectInterval(1000) emu.addNetworkBlocks([nb1, nb2, nb3]) udperf_app0 = UdperfApp(n1, n0, 0.0, 12, 6000, 6000, 6001) udperf_app2 = UdperfApp(n1, n2, 0.0, 12, 6000, 6000, 6002) # own-Ports must be unique on the same node! udperf_app3 = UdperfApp(n1, n3, 0.0, 12, 6000, 6000, 6003) n1.addUserResult("/home/nfd/cmdScheduler.log", "cmdSched" + str(n1.getId()) + ".log_%RUN%") emu.setDuration(14) emu.addApplications([udperf_app0, udperf_app2, udperf_app3]) emu.setName('symmetric_threeFlows') emu.setOutputDirectory('./results/' + emu.getName()) emu.setNumberOfRuns(0) emu.setSecondsBetweenRuns(5) emu.start()
nb1.selectInterval(1000) nb2 = NetworkBlock("./blocks/TwoNode_80211a_adhoc") nb2.setNodes([n2, n3]) nb2.selectedInterval(1000) emu.addNetworkBlocks([snb, nb1, nb2]) udperf_app0_1 = UdperfApp(n0, n1, 0.0, 99, 9000, 6000, 6001) udperf_app1_0 = UdperfApp(n1, n0, 0.0, 99, 9000, 6000, 6001) udperf_app0_2 = UdperfApp(n0, n2, 0.0, 99, 9000, 6000, 6001) udperf_app2_0 = UdperfApp(n2, n0, 0.0, 99, 9000, 6000, 6001) udperf_app1_3 = UdperfApp(n1, n3, 0.0, 99, 9000, 6000, 6001) udperf_app3_1 = UdperfApp(n3, n1, 0.0, 99, 9000, 6000, 6001) udperf_app2_3 = UdperfApp(n2, n3, 0.0, 99, 9000, 6000, 6001) udperf_app3_2 = UdperfApp(n3, n2, 0.0, 99, 9000, 6000, 6001) emu.setDuration(102) emu.addApplications([ udperf_app0_1, udperf_app1_0, udperf_app0_2, udperf_app2_0, udperf_app1_3, udperf_app3_1, udperf_app2_3, udperf_app3_2 ]) emu.setName('simpleFourNodeStatic') emu.setOutputDirectory('./results/' + emu.getName()) emu.setNumberOfRuns(3) emu.setSecondsBetweenRuns(15) emu.start()
# parse topology file and retrieve connections (abilene) ndn_NetworkOverlay = NDN_NetworkOverlay(emu.getNodes(), topology, "shortest", "/localhost/nfd/strategy/best-route") # setup applications based on groups established before ndn_apps = [] for server in groups: clients = groups[server] gateways = [] for client in clients: gateways.append(clientGatewayAssoc[client.getId()]) # dashproducer server_params = "--prefix /Node" + str(server.getId()) + " --document-root /home/nfd/data/concatenated/ --data-size 2048 --threads 1" # dashplayer client_params = "--name /Node" + str(server.getId()) + "/BBB_ED.mpd -r 12000 -l 500 -a buffer" if app_type == "NDN_DemoApps": # NDN_DemoApps(server, clients, start, duration, server_params, client_params, routingcmds) ndn_apps.append(NDN_DemoApps(server, clients, 0.0, 0, server_params, client_params, [])) elif app_type == "NDN_DemoAppsWLDR": # NDN_DemoAppsWLDR(server, clients, start, duration, server_params, client_params, routingcmds) ndn_apps.append(NDN_DemoAppsWLDR(server, clients, gateways, 0.0, 0, server_params, client_params, [])) else: raise ValueError("unknown application type: " + app_type) emu.addApplications([ndn_NetworkOverlay] + ndn_apps) emu.start(run)
# # configure the applications to be run # # Perform iperf bandwidth measurement (UDP) from client_node to server_node. # Create a new application functional block, passing node references. # This application block takes care of the application lifecycle (here starting/stopping an iperf UDP bandwidth test) # as well as the collection of results. # server, client, client_runtime[s], client_bandwidth[Mbps] iperfApp = iperf_logapp.IperfLogApp(server=emu.getNode(0), client=emu.getNode(1), client_runtime=EMULATION_DURATION - 1, client_bandwidth=100) # add the application to the emulation object emu.addApplications([iperfApp]) # schedule some arbitrary commands at three time points (second 0, 30 and 90 of the emulation) for node in emu.getNodes(): node.scheduleUserCmd(0, "date > /home/nfd/cmdExample.txt") node.scheduleUserCmd(30, "date >> /home/nfd/cmdExample.txt") node.scheduleUserCmd(90, "date >> /home/nfd/cmdExample.txt") # Fetch the files created by the previous commands, additionally fetch the logfiles of the command scheduler. # addUserResult() adds a file to the emulation results that are to be fetched from the nodes. # The marker "%RUN% is replaced with the actual run-number before the start of the run. for node in emu.getNodes(): node.addUserResult("/home/nfd/cmdExample.txt", "cmdExample" + str(node.getId()) + ".log_%RUN%") node.addUserResult("/home/nfd/cmdScheduler.log", "cmdSched" + str(node.getId()) + ".log_%RUN%")