예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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])
예제 #7
0
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