def parallel_duration_run_suit(): # TCP print "START ", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) starttime = time.time() measurement_folder_name = raw_input('Enter measurement name: ') tot_runs = raw_input('how many runs? each run should last around 5-6 mins - I suggest at least 30 with laptop in the same location. ') try: tot_runs = int(tot_runs) except Exception: tot_runs = 1 print "Error. Running "+str(tot_runs)+" measurement." e = Experiment() e.collect_calibrate = False e.use_iperf_timeout = 1 all_folder_name_list = [] for nruns in range(tot_runs): #for num_par in [1, 2, 3, 4, 5, 10]: # for timeout in [2, 5, 10, 15]: for num_par in [1, 10]: for timeout in [10]: print "\n\t\tTCP duration: "+str(timeout)+"; parallel: "+str(num_par)+"; RUN: " + str(nruns) + "\n" folder_name = measurement_folder_name + '_tcp_duration_' + str(timeout) + '_parallel_' + str(num_par) if not folder_name in all_folder_name_list: all_folder_name_list.append(folder_name) e.timeout = timeout e.num_parallel_streams = num_par e.set_unique_id(folder_name) print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Run no traff " +str(e.experiment_counter) e.run_only_experiment(e.no_traffic, 'no_tra') #real_tcp_perf(e) real_tcp_perf2(e) for folder_name in all_folder_name_list: e.set_unique_id(folder_name) e.transfer_all_later() e.kill_all(1) e.clear_all() # FOLLOW UP WITH UDP timeout=2 folder_name = measurement_folder_name + '_udp_duration_'+str(timeout) measure_iperf_udp_bandwidth_ratios(folder_name, tot_runs, timeout, False) print "DONE ", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) endtime = time.time() print "\n Total time taken = ", endtime - starttime return
def ping_buffer_endhost_test(): print "START ", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) starttime = time.time() measurement_folder_name = raw_input('Enter measurement name: ') tot_runs = raw_input('how many runs? each run should last around 5-6 mins - I suggest at least 30 with laptop in the same location. ') try: tot_runs = int(tot_runs) except Exception: tot_runs = 1 print "Error. Running "+str(tot_runs)+" measurement." e = Experiment(measurement_folder_name) # set all to yes e.collect_calibrate = False e.use_iperf_timeout = 1 e.USE_IPERF3 = 1 e.USE_IPERF_REV = 1 e.USE_UDP_PROBE = 0 e.USE_NETPERF = 0 e.tcp = 1 e.udp = 1 e.start_servers() e.WTF_enable = 1 e.timeout = 5 e.parallel = 1 e.num_parallel_streams = 4 for nruns in range(tot_runs): e.run_only_experiment(e.no_traffic, 'no_tra') e.run_only_experiment(e.iperf3_tcp_up_AS, 'AS_tcp') e.run_only_experiment(e.iperf3_tcp_dw_SA, 'SA_tcp') #e.run_only_experiment(e.iperf_tcp_up_AS, 'AS_tcp') #e.run_only_experiment(e.iperf_tcp_dw_SA, 'SA_tcp') e.parallel = 0 e.run_only_experiment(e.iperf_udp_up_AS, 'AS_udp') e.run_only_experiment(e.iperf_udp_dw_SA, 'SA_udp') time.sleep(5) print "DONE ", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) endtime = time.time() print "\n Total time taken = ", endtime - starttime e.transfer_all_later() e.kill_all(1) e.clear_all() endtime2 = time.time() print "\n Total transfer time = ", endtime2 - endtime return e
def real_measurements(calibrate=False, timeout=5): measurement_folder_name = raw_input('Enter measurement name: ') tot_runs = raw_input('how many runs? each run should last around 5-6 mins - I suggest at least 30 with laptop in the same location. ') try: tot_runs = int(tot_runs) except Exception: tot_runs = 1 print "Error. Running "+str(tot_runs)+" measurement." e = Experiment(measurement_folder_name) e.collect_calibrate = calibrate e.use_iperf_timeout = 1 e.timeout = timeout e.tcpdump = 0 for nruns in range(tot_runs): print "\n\t\tRUN : " + str(nruns) + "\n" print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Run Experiment Suit" if e.collect_calibrate: e.run_calibrate() # 120 + 20 = 140 s else: print "not doing calibrate" print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Run no traff " +str(e.experiment_counter) e.run_experiment(e.no_traffic, 'no_tra') e.get_udpprobe_rate() real_udp_perf(e) real_tcp_perf(e) real_udp_probes(e) e.blast=1 #e.set_udp_rate_mbit(100,100,300) real_udp_perf(e) e.blast=0 e.increment_experiment_counter() print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Wait 5 sec before next run" time.sleep(5) # 1 s wait before next suit e.transfer_all_later() e.kill_all(1) e.clear_all() return e
def wired_simulation_testbed(rates, delays, tot_runs): client_int = 'eth0' router_int = 'eth0' for rate in rates: for delay in delays: Q = Router('192.168.1.1', 'root', 'passw0rd') if rate != 0: Q.remoteCommand('sh ratelimit3.sh eth0 '+str(rate)) Q.remoteCommand('sh ratelimit3.sh eth1 '+str(rate)) Q.remoteCommand('tc qdisc del dev eth0 root') Q.remoteCommand('tc qdisc del dev eth1 root') Q.host.close() R = remove_tc_shaping(client_int, router_int) if delay != 0: subprocess.check_output('tc qdisc add dev '+client_int+' root netem delay ' +str(delay)+ 'ms', shell=True) R.remoteCommand('tc qdisc add dev '+router_int+' root netem delay ' +str(delay)+ 'ms') R.host.close() measurement_folder_name = 'wired_delay_'+str(int(2*delay))+'_access_'+str(rate) print "\n\t\t START " + measurement_folder_name + "\n" time.sleep(5) e = Experiment(measurement_folder_name) e.collect_calibrate = False for nruns in range(tot_runs): print "\n\t\t RUN : " + str(nruns) + " DELAY : " + str(delay) + " ACCESS LINK RATE : " + str(rate) + "\n" experiment_suit(e) time.sleep(1) # transfer all with no delay and no shaping R = remove_tc_shaping(client_int, router_int) R.host.close() Q = Router('192.168.1.1', 'root', 'passw0rd') Q.remoteCommand('tc qdisc del dev eth0 root') Q.remoteCommand('tc qdisc del dev eth1 root') Q.host.close() e.kill_all() e.clear_all() e.transfer_all_later() print "\n\t\t DONE " + measurement_folder_name + "\n" return e
def measure_iperf_udp_bandwidth_ratios(measurement_folder_name, tot_runs, timeout, calibrate=False): e = Experiment(measurement_folder_name) e.collect_calibrate = calibrate e.use_iperf_timeout = 1 e.timeout = timeout e.tcpdump = 1 e.parallel = 0 e.udp = 1 for nruns in range(tot_runs): print "\n\t\tUDP duration: "+str(timeout)+"; RUN : " + str(nruns) + "\n" print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Run Experiment Suit" if e.collect_calibrate: e.run_calibrate() # 120 + 20 = 140 s else: print "not doing calibrate" print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Run no traff " +str(e.experiment_counter) e.run_experiment(e.no_traffic, 'no_tra') e.set_udp_rate_mbit(10,10,10) #real_udp_perf(e) real_udp_perf2(e) e.set_udp_rate_mbit(100,100,100) #real_udp_perf(e) real_udp_perf2(e) #SHAPERPROBE #real_udp_probes(e) #e.get_udpprobe_rate(1) #real_udp_perf(e) #e.get_udpprobe_rate(0) #real_udp_perf(e) e.increment_experiment_counter() print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Wait 5 sec before next run" time.sleep(5) # 1 s wait before next suit e.transfer_all_later() e.kill_all(1) e.clear_all() return
def test_measurements(tot_runs, rate, timeout, comment=''): rate_bit = str(rate * 8) timeout_sec = str(timeout) rate_byte = str(rate) Q = Router('192.168.1.1', 'root', 'passw0rd') if rate != 0 and rate_byte != '0': Q.remoteCommand('sh ratelimit3.sh eth0 '+rate_byte) Q.remoteCommand('sh ratelimit3.sh eth1 '+rate_byte) Q.remoteCommand('tc qdisc del dev br-lan root;tc qdisc add dev br-lan root netem delay 40ms;tc qdisc show dev br-lan') else: Q.remoteCommand('tc qdisc del dev eth0 root') Q.remoteCommand('tc qdisc del dev eth1 root') #Q.remoteCommand('tc qdisc del dev br-lan root') Q.host.close() if comment != '': e = Experiment('hnl1_access_'+rate_bit+'Mbps_timeout_'+timeout_sec+'_'+comment) else: e = Experiment('hnl1_access_'+rate_bit+'Mbps_timeout_'+timeout_sec) e.collect_calibrate = False e.set_udp_rate_mbit(rate * 8) e.set_test_timeout(timeout) e.set_test_timeout(timeout) for nruns in range(tot_runs): print "\n\t\t RUN : " + str(nruns) + " rate : " + rate_bit + "Mbps\n" experiment_suit_testbed_all(e) #experiment_suit_testbed_udp(e) time.sleep(1) Q = Router('192.168.1.1', 'root', 'passw0rd') Q.remoteCommand('tc qdisc del dev eth0 root') Q.remoteCommand('tc qdisc del dev eth1 root') Q.remoteCommand('tc qdisc del dev br-lan root') Q.host.close() e.transfer_all_later() e.kill_all() e.clear_all() return e
def measure_iperf_sizes(folder_name, tot_runs, to, bits, calibrate=False): e = Experiment(folder_name) e.collect_calibrate = calibrate e.use_iperf_timeout = 0 e.timeout = to e.num_bits_to_send = bits for nruns in range(tot_runs): print "\n\t\tbits: "+bits+"; RUN : " + str(nruns) + "\n" experiment_suit_real_all(e) time.sleep(1) e.transfer_all_later() e.kill_all(1) e.clear_all() return e
def measure_iperf_tcp_duration_streams(folder_name, tot_runs, timeout, num_par=10, calibrate=False): e = Experiment(folder_name) e.collect_calibrate = calibrate e.use_iperf_timeout = 1 e.timeout = timeout e.num_parallel_streams = num_par for nruns in range(tot_runs): print "\n\t\tduration: "+str(timeout)+"; parallel: "+str(num_par)+"; RUN: " + str(nruns) + "\n" experiment_suit_real_all(e) #print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Run netperf AR " +str(e.experiment_counter) #e.run_only_experiment(e.netperf_tcp_up_AR, 'AR_tcp') #print time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())) + ": Run netperf RA " +str(e.experiment_counter) #e.run_only_experiment(e.netperf_tcp_dw_RA, 'RA_tcp') time.sleep(1) e.transfer_all_later() e.kill_all(1) e.clear_all() return e