def test02_04_base_ecn_red(network, testname, redminmax, bw=10, latency=50, qlen=200, duration=10): """ 独立复制出的 03 04 实验, 用于enc抓包测试 :param redminmax: # red参数设置 :param testname: # 测试名称 :param network: :param bw: :param latency: :param qlen: :param duration: :return: """ result = {} def run_this_bench(): return ecn_util.mesure_ping_and_netperf(network, round_count=1, round_duration=duration, ping_interval=0.1) # ecn 参数变化测试 02 03 04 testfullname = "%s ECN:%s qlen:%s bw:%sMbps lat:%sms redminmax:%s" % ( testname, True, qlen, bw, latency, redminmax) info("*** setup %s \n" % testfullname) test01_06_setup_queue_and_latency(network, ecn=True, bw=bw, queue_len=qlen, latency=latency, redminmax=redminmax) info("*** running %s ...\n" % testfullname) result[testfullname] = run_this_bench() ecn_util.dump_result(result) return result
def test01_04_ecn_red(network, bw=10, latency=50, qlen=200, duration=10): """ 测试结果记录在 ecn_result/2016-06-28_ecn_red.txt # 设置 使用 red ecn 以及不使用, 并使用 mesure_delay_and_output() 测试 :param network: :param bw: # 10Mbps 带宽 :param latency: # 50ms 延时 :param qlen: # 队列长度 :param duration: # 运行时间 :return: """ # print_mininet_objs(net) result_all = {} # result_all dict 追加入01 结果 result_all.update(test01_base(network, "TEST01", bw=bw, latency=latency, qlen=qlen, duration=duration)) # result_all dict 追加入03 04 05 结果 for testname, redminmax in zip(["TEST02", "TEST03", "TEST04"], ["min 50000 max 150000 avpkt 1500", "min 65000 max 150000 avpkt 1500", "min 75000 max 150000 avpkt 1500" ]): # result_all = result1.copy() # if testname == "TEST02": continue result_all.update( test02_04_base_ecn_red(network, testname, redminmax, bw=bw, latency=latency, qlen=qlen, duration=duration)) info("\n\n\n*** all result here ***\n\n\b") ecn_util.dump_result(result_all) return result_all
def test01_base(network, testname, bw=10, latency=50, qlen=200, duration=10): """ # 设置 使用 red ecn 以及不使用, 并使用 mesure_delay_and_output() 测试 :param testname: # 测试名称 :param network: :param bw: # 10Mbps 带宽 :param latency: # 50ms 延时 :param qlen: # 队列长度 :param duration: # 运行时间 :return: """ # print_mininet_objs(net) result = {} red_ecn = False def run_this_bench(): return ecn_util.mesure_ping_and_netperf(network, round_count=1, round_duration=duration, ping_interval=0.1) # 无ecn测试 TEST01 default_minmax = "" testfullname = "%s ECN:%s qlen:%s bw:%sMbps lat:%sms no red:%s" % ( testname, red_ecn, qlen, bw, latency, "") info("*** setup %s\n" % testfullname) test01_06_setup_queue_and_latency(network, ecn=red_ecn, bw=bw, queue_len=qlen, latency=latency, redminmax=default_minmax) info("*** running %s ...\n" % testfullname) result[testfullname] = run_this_bench() ecn_util.dump_result(result) return result
def test_diff_bw(network): """ # 设置不同带宽条件qos, 并使用 iperf测试 :param network: :return: """ # print_mininet_objs(net) result = {} for bw in [10, 50, 100]: ecn_util.base_setup_queue_and_latency(network, bw=bw, queue_len=200) # run_multi_bench() result[bw] = network.iperf(hosts=[network.get("h1"), network.get("h3")]) ecn_util.dump_result(result)
def test_diff_latency(network): """ # 设置不同延时条件qos, 并使用 ping 测试 :param network: :return: """ # print_mininet_objs(net) result = {} for latency in [10, 50, 100]: ecn_util.base_setup_queue_and_latency(network, latency=latency, queue_len=200) # run_multi_bench() # result[latency] = network.ping([net.get("h1"), net.get("h3")] ) result[latency] = test_ping_with_background_traffice(network, background=False) # 禁止背后流量, 以查看准确延时 ecn_util.dump_result(result)
def test01_04_ecn_red_diff_duration(network, bw=10, latency=50, qlen=200, duration=(5, 10, 15)): """ 将 test_diff_ecn_red 封装入更上一级的测试中去, 支持不同时长 duration 的多轮测试 测试结果 ecn_result/2016-06-28_ecn_red.txt :param network: :param bw: :param latency: :param qlen: :param duration: :return: """ results = {} for param in duration: # 时延测试 results[param] = test01_04_ecn_red(network, bw=bw, latency=latency, qlen=qlen, duration=param) for key in sorted(results.keys()): print "** 测试时长 %s seconds" % key ecn_util.dump_result(results[key])
def ovs_openflow_ecn(network, testname, bw=10, latency=50, qlen=200, duration=10, qmins={50000}, ecn_tcp_flag=False, wait_seconds=10): """ # 设置 使用 外部 ecn :param qmins: queue min 监控大小 :param ecn_tcp_flag : 使用ecn tcp 或 ip 控制 :param testname: # 测试名称 :param network: :param bw: # 10Mbps 带宽 :param latency: # 50ms 延时 :param qlen: # 队列长度 :param duration: # 运行时间 :param wait_seconds: 附加等候时间, 等候进程结束 或是延 长helper程序运行 :return: """ # print_mininet_objs(net) result_all = {} red_ecn = False # 无ecn测试 TEST01 default_minmax = "" queue_setup_fullname = "%s ECN:%s qlen:%s bw:%sMbps lat:%sms duraion:%s" % ( testname, red_ecn, qlen, bw, latency, duration) info("*** setup queue %s\n" % queue_setup_fullname) test01_06_setup_queue_and_latency(network, ecn=red_ecn, bw=bw, queue_len=qlen, latency=latency, redminmax=default_minmax) for min_queue in qmins: testfullname = "sdn_ecn %s min:%s qlen:%s bw:%sMbps lat:%sms duraion:%s" % ( testname + str(min_queue), min_queue, qlen, bw, latency, duration) info("*** setup ecn_ovs_helper (min= %s) for mod_ecn \n" % min_queue) ecn_ovs_helper.init_switch() info("*** running %s ...\n" % testfullname) result_all[testfullname] = \ ecn_util.mesure_ping_and_netperf(network, round_count=1, round_duration=duration, ping_interval=0.1, ovs_helper=True, qmin=min_queue, ecn_tcp_flag=ecn_tcp_flag, ovs_helper_wait=wait_seconds) info("*** waiting %s seconds for all processes finished ...\n" % wait_seconds) sleep(wait_seconds) # 每轮间隔一些时间, 等候所有进程结束 ecn_util.dump_result(result_all) ecn_result.average_result(result_all.values()) debug("%s\n" % str(result_all.keys())) return result_all