Beispiel #1
0
def vlan_variables():
    global tg
    global tg_handler,hw_constants_DUT
    sc_data.cli_type_click = "click"
    sc_data.cli_type= st.get_ui_type(vars.D1, cli_type="")
    sc_data.vlan_list = random_vlan_list(count=2)
    sc_data.vlan_id = str(sc_data.vlan_list[0])
    sc_data.vlan = str(sc_data.vlan_list[1])
    sc_data.kbps = 1000
    sc_data.frame_size = 68
    sc_data.rate_pps =5000
    sc_data.packets = (sc_data.kbps*1024)/(sc_data.frame_size*8)
    sc_data.bum_deviation = int(0.10 * sc_data.packets)
    sc_data.lower_pkt_count = int(sc_data.packets - sc_data.bum_deviation)
    sc_data.higher_pkt_count = int(sc_data.packets + sc_data.bum_deviation)
    sc_data.max_vlan = 4093
    sc_data.source_mac = "00:0A:01:00:00:01"
    sc_data.source_mac1 = "00:0A:02:00:00:01"
    sc_data.line_rate = 100
    sc_data.wait_stream_run = 10
    sc_data.wait_for_stats = 10
    sc_data.free_port = st.get_free_ports(vars.D1)[0]
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2", "T1D2P1", "T1D2P2")
    tg = tg_handler["tg"]
    tg_info['tg_info'] = tg_handler
    tg_info['vlan_id'] = sc_data.vlan
    sc_data.vlan_id_start = 1
    sc_data.mac_count = 100
    sc_data.dut_platform = basic_obj.get_hwsku(vars.D1)
    sc_data.vlan_data = [{"dut": [vars.D1], "vlan_id": sc_data.vlan, "tagged": [vars.D1T1P1, vars.D1T1P2]}]
    hw_constants_DUT = st.get_datastore(vars.D1, "constants")
    sc_data.warm_reboot_supported_platforms = hw_constants_DUT['WARM_REBOOT_SUPPORTED_PLATFORMS']
def arp_static_route_reboot_module_hooks(request):
    # add things at the start of this module
    init_vars()
    initialize_variables()
    get_parms()

    global tg_handler
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2")
    global tg
    tg = tg_handler["tg"]
    tg_ph_list = [tg_handler["tg_ph_1"], tg_handler["tg_ph_2"]]
    st.log("configuring static route")
    adding_static_route()
    st.log("Getting ARP entry dynamically")
    adding_dynamic_arp()
    ip_obj.config_ip_addr_interface(vars.D1,
                                    vars.D1T1P2,
                                    data.ipv4_address_1,
                                    data.mask,
                                    family="ipv4",
                                    config='add')
    st.log("Configuring static ARP")
    arp_obj.add_static_arp(vars.D1, data.static_arp_ip, data.static_arp_mac,
                           vars.D1T1P2)
    st.log(
        "Verifying static route entries before save and reboot/fast-reboot/warm-reboot"
    )
    static_route_verify()
    st.log(
        "Verifying dynamic ARP entries before save and reboot/fast-reboot/warm-reboot"
    )
    if not arp_obj.verify_arp(vars.D1, data.ipv4_address_ixia,
                              data.src_mac_addr, vars.D1T1P1):
        st.report_fail("ARP_entry_dynamic_entry_fail", data.ipv4_address_ixia,
                       vars.D1)
    else:
        st.log("Verified that dynamic ARP entry is present in arp table")
    st.log(
        "Verifying static ARP entries before save and reboot/fast-reboot/warm-reboot"
    )
    if not arp_obj.verify_arp(vars.D1, data.static_arp_ip, data.static_arp_mac,
                              ""):
        st.report_fail("static_arp_create_fail", vars.D1)
    else:
        st.log("Verified that static ARP entry is present in arp table")
    st.log("Save the config on the DUT")
    rb_obj.config_save(vars.D1)
    st.log("saving config in vtysh mode to save static route")
    rb_obj.config_save(vars.D1, shell="vtysh")
    yield
    # Below step will clear IP adresses configured on different interfaces in the device
    ip_obj.clear_ip_configuration(st.get_dut_names())
    #Below step will clear static route configured in the device
    ip_obj.delete_static_route(vars.D1,
                               data.ipv4_address_ixia,
                               data.ipv4_address_network,
                               family='ipv4',
                               shell="vtysh")
    #Below step will delete static arp entries configured in the device
    arp_obj.delete_static_arp(vars.D1, data.static_arp_ip, vars.D1T1P2)
Beispiel #3
0
def ndp_module_hooks(request):
    vars = st.ensure_min_topology("D1T1:2")

    # Initialize TG and TG port handlers
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2")
    tg = tg_handler["tg"]

    # Test setup details
    data.my_dut_list = st.get_dut_names()
    dut1 = data.my_dut_list[0]

    # NDP module configuration
    st.log("NDP module configuration.")
    ip_obj.config_ip_addr_interface(dut1,
                                    vars.D1T1P1,
                                    data.local_ip6_addr[0],
                                    64,
                                    family=data.af_ipv6)
    vlan_obj.create_vlan(dut1, data.vlan_1)
    vlan_obj.add_vlan_member(dut1, data.vlan_1, vars.D1T1P2, True)
    ip_obj.config_ip_addr_interface(dut1,
                                    data.vlan_int_1,
                                    data.local_ip6_addr[1],
                                    64,
                                    family=data.af_ipv6)

    # TG ports reset
    st.log("Resetting the TG ports")
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])

    # TG protocol interface creation
    st.log("TG protocol interface creation")
    h1 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_1"],
                                mode='config',
                                ipv6_intf_addr=data.neigh_ip6_addr_gw[0],
                                ipv6_prefix_length='64',
                                ipv6_gateway=data.local_ip6_addr[0],
                                src_mac_addr=data.tg_mac1,
                                arp_send_req='1',
                                count=data.count)
    st.log("INTFCONF: " + str(h1))
    h2 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_2"],
                                mode='config',
                                ipv6_intf_addr=data.neigh_ip6_addr_gw[1],
                                ipv6_prefix_length='64',
                                ipv6_gateway=data.local_ip6_addr[1],
                                src_mac_addr=data.tg_mac2,
                                arp_send_req='1',
                                vlan_id=data.vlan_1,
                                vlan=1,
                                count=data.count)
    st.log("INTFCONF: " + str(h2))

    yield
    # NDP module cleanup
    st.log("NDP module cleanup.")
    ip_obj.clear_ip_configuration(dut1,
                                  family="ipv6",
                                  thread=data.clear_parallel)
    vlan_obj.clear_vlan_configuration(dut1, thread=data.clear_parallel)
Beispiel #4
0
def arp_module_hooks(request):
    global vars, tg_handler, tg, dut1, d1_mac_addr, h1, h2

    # Min topology verification
    vars = st.ensure_min_topology("D1T1:2")

    # Initialize TG and TG port handlers
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2")
    tg = tg_handler["tg"]

    # Test setup details
    data.my_dut_list = st.get_dut_names()
    dut1 = data.my_dut_list[0]

    # Test variables
    d1_mac_addr = mac.get_sbin_intf_mac(dut1, "eth0")

    # ARP module configuration
    st.log("ARP module configuration.")
    ip_obj.config_ip_addr_interface(dut1, vars.D1T1P1, data.d1t1_ip_addr,
                                    data.mask)
    vlan_obj.create_vlan(dut1, data.vlan_1)
    vlan_obj.add_vlan_member(dut1, data.vlan_1, vars.D1T1P2, True)
    ip_obj.config_ip_addr_interface(dut1, data.vlan_int_1, data.d1t2_ip_addr,
                                    data.mask)

    # TG ports reset
    st.log("Resetting the TG ports")
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])

    # TG protocol interface creation
    st.log("TG protocol interface creation")
    h1 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_1"],
                                mode='config',
                                intf_ip_addr=data.t1d1_ip_addr,
                                gateway=data.d1t1_ip_addr,
                                src_mac_addr=data.t1d1_mac_addr,
                                arp_send_req='1')
    st.log("INTFCONF: " + str(h1))
    h2 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_2"],
                                mode='config',
                                intf_ip_addr=data.t2d1_ip_addr,
                                gateway=data.d1t2_ip_addr,
                                src_mac_addr=data.t2d1_mac_addr,
                                arp_send_req='1',
                                vlan_id=data.vlan_1,
                                vlan=1)
    st.log("INTFCONF: " + str(h2))

    yield
    # ARP module cleanup
    st.log("ARP module cleanup.")
    ip_obj.clear_ip_configuration(dut1,
                                  family="ipv4",
                                  thread=data.clear_parallel)
    vlan_obj.clear_vlan_configuration(dut1, thread=data.clear_parallel)
Beispiel #5
0
def ip_module_hooks(request):
    global vars, tg_handler, tg
    # Min topology verification
    st.log("Ensuring minimum topology")
    vars = st.ensure_min_topology("D1T1:2")

    # Initialize TG and TG port handlers
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2")
    tg = tg_handler["tg"]
    yield
    ipfeature.clear_ip_configuration(vars.D1)
Beispiel #6
0
def test_ft_ip_static_route_traffic_forward():
    # Objective - Verify the Ipv4 traffic forwarding over IPv4 static route.
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D2P1")
    tg = tg_handler["tg"]
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])
    tg.tg_traffic_control(action="clear_stats",
                          port_handle=tg_handler["tg_ph_list"])

    dut_rt_int_mac1 = basic_obj.get_ifconfig_ether(vars.D1, vars.D1T1P1)
    h1 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_1"], mode='config', intf_ip_addr=data.ip4_addr[0], \
                                gateway=data.ip4_addr[1], src_mac_addr=data.tg_mac1, arp_send_req='1')
    st.log("INTFCONF: " + str(h1))
    h2 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_2"], mode='config', intf_ip_addr=data.ip4_addr[9], \
                                gateway=data.ip4_addr[8], src_mac_addr=data.tg_mac2, arp_send_req='1')
    st.log("INTFCONF: " + str(h2))
    # Ping from tgen to DUT.
    res = tgapi.verify_ping(src_obj=tg, port_handle=tg_handler["tg_ph_1"], dev_handle=h1['handle'], dst_ip=data.ip4_addr[1], \
                      ping_count='1', exp_count='1')
    if res:
        st.log("Ping succeeded.")
    else:
        st.warn("Ping failed.")
    tr1 = tg.tg_traffic_config(port_handle=tg_handler["tg_ph_1"], mode='create', transmit_mode='single_burst',
                               pkts_per_burst=2000, \
                               length_mode='fixed', rate_pps=2000, l3_protocol='ipv4', mac_src=data.tg_mac1, \
                               mac_dst=dut_rt_int_mac1, ip_src_addr=data.ip4_addr[0],
                               ip_dst_addr=data.ip4_addr[9])
    st.log("TRAFCONF: " + str(tr1))
    res = tg.tg_traffic_control(action='run', stream_handle=tr1['stream_id'])
    st.log("TR_CTRL: " + str(res))
    tg.tg_traffic_control(action='stop', stream_handle=tr1['stream_id'])
    st.log("Checking the stats and verifying the traffic flow")
    traffic_details = {
        '1': {
            'tx_ports': [vars.T1D1P1],
            'tx_obj': [tg_handler["tg"]],
            'exp_ratio': [1],
            'rx_ports': [vars.T1D2P1],
            'rx_obj': [tg_handler["tg"]],
        }
    }
    #verify statistics
    aggrResult = tgapi.validate_tgen_traffic(traffic_details=traffic_details,
                                             mode='aggregate',
                                             comp_type='packet_count')
    if not aggrResult:
        st.report_fail("traffic_verification_failed")
    st.report_pass("test_case_passed")
Beispiel #7
0
def snmp_traffic_config():
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2")
    tg = tg_handler["tg"]
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])
    tg.tg_traffic_control(action="clear_stats",
                          port_handle=tg_handler["tg_ph_list"])

    data.streams = {}
    stream = tg.tg_traffic_config(port_handle=tg_handler["tg_ph_1"],
                                  mode='create',
                                  transmit_mode='continuous',
                                  length_mode='fixed',
                                  rate_pps=100,
                                  frame_size=72,
                                  l2_encap='ethernet_ii_vlan',
                                  vlan_id=data.vlan,
                                  mac_src='00:0a:01:00:00:01',
                                  mac_src_step='00:00:00:00:00:01',
                                  mac_src_mode='increment',
                                  mac_src_count=10,
                                  mac_dst='00:0a:12:00:00:01',
                                  vlan="enable")
    data.streams['stream1'] = stream['stream_id']
    stream = tg.tg_traffic_config(port_handle=tg_handler["tg_ph_2"],
                                  mode='create',
                                  transmit_mode='continuous',
                                  length_mode='fixed',
                                  rate_pps=10,
                                  l2_encap='ethernet_ii_vlan',
                                  vlan_id=data.vlan,
                                  mac_src='00:0a:12:00:00:01',
                                  mac_dst='00:0a:01:00:00:01',
                                  vlan="enable")
    data.streams['stream2'] = stream['stream_id']
    intf_obj.clear_interface_counters(vars.D1)
    tg.tg_traffic_control(
        action='run',
        stream_handle=[data.streams['stream1'], data.streams['stream2']])
    st.wait(2)
    tg.tg_traffic_control(
        action='stop',
        stream_handle=[data.streams['stream1'], data.streams['stream2']])
Beispiel #8
0
def tgen_config():
    data.tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2", "T1D2P1")
    data.tg = data.tg_handler['tg']
    data.tg.tg_traffic_control(action="reset",
                               port_handle=data.tg_handler["tg_ph_list"])
    data.tg.tg_traffic_control(action="clear_stats",
                               port_handle=data.tg_handler["tg_ph_list"])

    data.stream = data.tg_handler['tg'].tg_traffic_config(
        port_handle=data.tg_handler["tg_ph_1"],
        mode='create',
        transmit_mode="single_burst",
        pkts_per_burst=100,
        length_mode='fixed',
        l2_encap='ethernet_ii_vlan',
        vlan_id=data.vlan,
        rate_pps=100,
        frame_size=64,
        vlan="enable",
        mac_src=data.source_mac,
        mac_dst=data.destination_mac)
Beispiel #9
0
def test_ft_ip_v4_v6_L2_L3_translation():
    # Objective - Verify that L2 port to IPv4 L3 port transition and vice-versa is successful.
    st.log("Checking IPv4 ping from {} to {} over  routing interface".format(
        vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D1, data.ip4_addr[7], family=data.af_ipv4, count=1):
        st.report_fail("ping_fail", data.ip4_addr[6], data.ip4_addr[7])
    st.log(
        "Checking IPv6 ping from {} to {} over vlan routing interface".format(
            vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D2, data.ip6_addr[6], family=data.af_ipv6, count=1):
        st.report_fail("ping_fail", data.ip6_addr[7], data.ip6_addr[6])
    st.log("L3 to L2 port transition")
    st.log("Removing ipv4,ipv6 address from interface")
    ipfeature.delete_ip_interface(vars.D1,
                                  vars.D1D2P4,
                                  data.ip4_addr[6],
                                  24,
                                  family=data.af_ipv4)
    ipfeature.delete_ip_interface(vars.D2,
                                  vars.D2D1P4,
                                  data.ip4_addr[7],
                                  24,
                                  family=data.af_ipv4)
    ipfeature.delete_ip_interface(vars.D1,
                                  vars.D1D2P4,
                                  data.ip6_addr[6],
                                  96,
                                  family=data.af_ipv6)
    ipfeature.delete_ip_interface(vars.D2,
                                  vars.D2D1P4,
                                  data.ip6_addr[7],
                                  96,
                                  family=data.af_ipv6)
    ipfeature.delete_ip_interface(vars.D1,
                                  vars.D1T1P1,
                                  data.ip4_addr[1],
                                  24,
                                  family=data.af_ipv4)
    ipfeature.delete_ip_interface(vars.D2,
                                  vars.D2T1P1,
                                  data.ip4_addr[8],
                                  24,
                                  family=data.af_ipv4)
    st.log("Removing the static routes")
    ipfeature.delete_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    ipfeature.delete_static_route(vars.D1,
                                  data.static_ip6_rt_drop,
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
    st.log("Vlan creation and port association configuration")
    vlan_obj.create_vlan(vars.D1, data.vlan_2)
    st.log("Adding back to back connecting ports to vlan {}".format(
        data.vlan_2))
    vlan_obj.add_vlan_member(vars.D1,
                             data.vlan_2, [vars.D1D2P4],
                             tagging_mode=True)
    vlan_obj.create_vlan(vars.D2, data.vlan_2)
    vlan_obj.add_vlan_member(vars.D2,
                             data.vlan_2, [vars.D2D1P4],
                             tagging_mode=True)
    st.log("Adding TG connecting ports to vlan {}".format(data.vlan_1))
    vlan_obj.add_vlan_member(vars.D1,
                             data.vlan_2,
                             vars.D1T1P1,
                             tagging_mode=True)
    vlan_obj.add_vlan_member(vars.D2,
                             data.vlan_2,
                             vars.D2T1P1,
                             tagging_mode=True)
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D2P1")
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])
    tg.tg_traffic_control(action="clear_stats",
                          port_handle=tg_handler["tg_ph_list"])

    tr2 = tg.tg_traffic_config(port_handle=tg_handler["tg_ph_2"],
                               mode='create',
                               rate_pps="2000",
                               mac_src_mode="fixed",
                               transmit_mode="single_burst",
                               pkts_per_burst=2000,
                               length_mode='fixed',
                               l2_encap='ethernet_ii_vlan',
                               vlan_id=data.vlan_2,
                               mac_dst_mode="fixed",
                               vlan="enable",
                               mac_src="00:a1:bb:cc:dd:01",
                               mac_dst="00:b1:bb:cc:dd:01")
    st.log("TRAFCONF: " + str(tr2))
    res = tg.tg_traffic_control(action='run', stream_handle=tr2['stream_id'])
    tg.tg_traffic_control(action='stop', stream_handle=tr2['stream_id'])
    st.wait(data.wait_tgstats)
    st.log("TR_CTRL: " + str(res))
    st.log("Fetching TGen statistics")
    stats_tg1 = tgapi.get_traffic_stats(tg_handler["tg"],
                                        mode="aggregate",
                                        port_handle=tg_handler["tg_ph_2"])
    total_tx_tg1 = stats_tg1.tx.total_packets
    stats_tg2 = tgapi.get_traffic_stats(tg_handler["tg"],
                                        mode="aggregate",
                                        port_handle=tg_handler["tg_ph_1"])
    total_rx_tg2 = stats_tg2.rx.total_packets
    st.log("total_tx_tg1 = {}".format(total_tx_tg1))
    total_tx_tg1_95_percentage = int(total_tx_tg1) * 0.95
    st.log("total_tx_tg1_95_percentage= {}".format(total_tx_tg1_95_percentage))
    st.log("total_rx_tg2 = {}".format(total_rx_tg2))
    if int(total_tx_tg1_95_percentage) > int(total_rx_tg2):
        st.report_fail("traffic_verification_failed")
    st.log("Removing vlan configuration")
    vlan_obj.delete_vlan_member(vars.D1, data.vlan_2,
                                [vars.D1D2P4, vars.D1T1P1], True)
    vlan_obj.delete_vlan_member(vars.D2, data.vlan_2,
                                [vars.D2D1P4, vars.D2T1P1], True)
    st.log("L2 to L3 port transition")
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip4_addr[6],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip4_addr[7],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.create_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    st.log("Checking IPv4 ping from {} to {} over routing interface".format(
        vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D1, data.ip4_addr[7], family=data.af_ipv4, count=1):
        st.report_fail("ping_fail", data.ip4_addr[6], data.ip4_addr[7])
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip6_addr[6],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip6_addr[7],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.create_static_route(vars.D1,
                                  data.static_ip6_rt_drop,
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
    st.log(
        "Checking IPv6 ping from {} to {} over vlan routing interface".format(
            vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D2, data.ip6_addr[6], family=data.af_ipv6, count=1):
        st.report_fail("ping_fail", data.ip6_addr[7], data.ip6_addr[6])
    st.report_pass("test_case_passed")
Beispiel #10
0
def ip_module_hooks(request):
    global vars, tg_handler, tg
    # Min topology verification
    st.log("Ensuring minimum topology")
    vars = st.ensure_min_topology("D1T1:4", "D2T1:2", "D1D2:4")
    # Initialize TG and TG port handlers
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2", "T1D2P1",
                                          "T1D2P2")
    tg = tg_handler["tg"]
    # IP module configuration
    st.log("Vlan routing configuration on D1D2P1,D2D1P1")
    vlan_obj.create_vlan(vars.D1, data.vlan_1)
    vlan_obj.add_vlan_member(vars.D1,
                             data.vlan_1, [vars.D1D2P1],
                             tagging_mode=True)
    vlan_obj.create_vlan(vars.D2, data.vlan_1)
    vlan_obj.add_vlan_member(vars.D2,
                             data.vlan_1, [vars.D2D1P1],
                             tagging_mode=True)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.vlan_int_1,
                                       data.ip4_addr[2],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.vlan_int_1,
                                       data.ip6_addr[2],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.vlan_int_1,
                                       data.ip4_addr[3],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.vlan_int_1,
                                       data.ip6_addr[3],
                                       96,
                                       family=data.af_ipv6)
    st.log("Port routing configuration on port-channel")
    data.dut1_pc_members = [vars.D1D2P2, vars.D1D2P3]
    data.dut2_pc_members = [vars.D2D1P2, vars.D2D1P3]
    pc_obj.create_portchannel(vars.D1, data.port_channel)
    pc_obj.add_portchannel_member(vars.D1, data.port_channel,
                                  data.dut1_pc_members)
    pc_obj.create_portchannel(vars.D2, data.port_channel)
    pc_obj.add_portchannel_member(vars.D2, data.port_channel,
                                  data.dut2_pc_members)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.port_channel,
                                       data.ip4_addr[4],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.port_channel,
                                       data.ip4_addr[5],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.port_channel,
                                       data.ip6_addr[4],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.port_channel,
                                       data.ip6_addr[5],
                                       96,
                                       family=data.af_ipv6)
    st.log("port routing configuration on  D1D2P4,D2D1P4")
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip4_addr[6],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip4_addr[7],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip6_addr[6],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip6_addr[7],
                                       96,
                                       family=data.af_ipv6)
    st.log("configuring the dut1 ports connected to TGen with ip addresses")
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1T1P1,
                                       data.ip4_addr[1],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1T1P2,
                                       data.ip6_addr[1],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.create_static_route(vars.D1,
                                  data.ip6_addr[7],
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
    ipfeature.create_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    st.log("configuring the dut2 ports connected to TGen with ip addresses")
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2T1P1,
                                       data.ip4_addr[8],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2T1P2,
                                       data.ip6_addr[8],
                                       96,
                                       family=data.af_ipv6)

    yield
    ipfeature.clear_ip_configuration(st.get_dut_names())
    ipfeature.clear_ip_configuration(st.get_dut_names(), 'ipv6')
    vlan_obj.clear_vlan_configuration(st.get_dut_names())
    pc_obj.clear_portchannel_configuration(st.get_dut_names())
    ipfeature.delete_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    ipfeature.delete_static_route(vars.D1,
                                  data.static_ip6_rt_drop,
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
Beispiel #11
0
def create_v6_route(route_count):
    vars = st.get_testbed_vars()
    dut = vars.D1

    ipfeature.show_ip_route(dut, family='ipv6')
    ipfeature.get_interface_ip_address(dut, family='ipv6')

    bgpfeature.create_bgp_router(dut, data.as_num, '')
    bgpfeature.create_bgp_neighbor(dut,
                                   data.as_num,
                                   data.ip6_addr[0],
                                   data.remote_as_num,
                                   family="ipv6")
    create_bgp_neighbor_route_map_config(dut, data.as_num, data.ip6_addr[0],
                                         data.routemap)

    tg_handler = tgapi.get_handles_byname("T1D1P2", "T1D2P2")
    tg = tg_handler["tg"]
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])
    tg.tg_traffic_control(action="clear_stats",
                          port_handle=tg_handler["tg_ph_list"])

    dut_rt_int_mac1 = basic_obj.get_ifconfig_ether(vars.D1, vars.D1T1P1)
    h1 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_1"], mode='config', ipv6_intf_addr=data.ip6_addr[0], \
                                ipv6_prefix_length='64', ipv6_gateway=data.ip6_addr[1],
                                src_mac_addr=data.tg_mac1, arp_send_req='1')
    st.log("INTFCONF: " + str(h1))
    h2 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_2"], mode='config', ipv6_intf_addr=data.ip6_addr[9], \
                                ipv6_prefix_length='64', ipv6_gateway=data.ip6_addr[8],
                                src_mac_addr=data.tg_mac2, arp_send_req='1')
    st.log("INTFCONF: " + str(h2))

    # Ping from tgen to DUT.
    res = tgapi.verify_ping(src_obj=tg, port_handle=tg_handler["tg_ph_1"], dev_handle=h1['handle'], dst_ip=data.ip6_addr[1], \
                      ping_count='1', exp_count='1')
    if res:
        st.log("Ping succeeded.")
    else:
        st.warn("Ping failed.")

    bgp_conf = tg.tg_emulation_bgp_config(handle=h1['handle'],
                                          mode='enable',
                                          ip_version='6',
                                          active_connect_enable='1',
                                          local_as=data.as_num,
                                          remote_as=data.remote_as_num,
                                          remote_ipv6_addr=data.ip6_addr[1])

    tg.tg_emulation_bgp_route_config(handle=bgp_conf['handle'],
                                     mode='add',
                                     ip_version='6',
                                     num_routes=route_count,
                                     prefix='3300:1::',
                                     as_path='as_seq:1')
    tg.tg_emulation_bgp_control(handle=bgp_conf['handle'], mode='start')

    # Configuring the BGP router.
    st.log("BGP neighborship established.")
    tr1 = tg.tg_traffic_config(port_handle=tg_handler["tg_ph_1"], mode='create', transmit_mode='single_burst',
                               pkts_per_burst=2000, \
                               length_mode='fixed', rate_pps=2000, l3_protocol='ipv6', mac_src=data.tg_mac1, \
                               mac_dst=dut_rt_int_mac1, ipv6_src_addr=data.ip6_addr[0],
                               ipv6_dst_addr=data.ip6_addr[9])
    st.log("TRAFCONF: " + str(tr1))

    res = tg.tg_traffic_control(action='run', stream_handle=tr1['stream_id'])
    st.log("TR_CTRL: " + str(res))
    tg.tg_traffic_control(action='stop', stream_handle=tr1['stream_id'])
    st.log("Checking the stats and verifying the traffic flow")
    traffic_details = {
        '1': {
            'tx_ports': [vars.T1D1P2],
            'tx_obj': [tg_handler["tg"]],
            'exp_ratio': [1],
            'rx_ports': [vars.T1D2P2],
            'rx_obj': [tg_handler["tg"]],
        }
    }
    # verify statistics
    aggrResult = tgapi.validate_tgen_traffic(traffic_details=traffic_details,
                                             mode='aggregate',
                                             comp_type='packet_count')
    if not aggrResult:
        return False
    else:
        return True
Beispiel #12
0
def create_v4_route(route_count):
    vars = st.get_testbed_vars()
    dut = vars.D1

    ipfeature.show_ip_route(dut)
    ipfeature.get_interface_ip_address(dut)
    intf_obj.interface_status_show(dut)

    bgpfeature.create_bgp_router(dut, data.as_num, '')
    bgpfeature.create_bgp_neighbor(dut, data.as_num, data.ip4_addr[0],
                                   data.remote_as_num)

    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D2P1")
    tg = tg_handler["tg"]
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])
    tg.tg_traffic_control(action="clear_stats",
                          port_handle=tg_handler["tg_ph_list"])

    dut_rt_int_mac1 = basic_obj.get_ifconfig_ether(vars.D1, vars.D1T1P1)
    h1 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_1"], mode='config', intf_ip_addr=data.ip4_addr[0], \
                                gateway=data.ip4_addr[1], src_mac_addr=data.tg_mac1, arp_send_req='1')
    st.log("INTFCONF: " + str(h1))
    h2 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_2"], mode='config', intf_ip_addr=data.ip4_addr[9], \
                                gateway=data.ip4_addr[8], src_mac_addr=data.tg_mac2, arp_send_req='1')
    st.log("INTFCONF: " + str(h2))
    # Ping from tgen to DUT.
    res = tgapi.verify_ping(src_obj=tg, port_handle=tg_handler["tg_ph_1"], dev_handle=h1['handle'], dst_ip=data.ip4_addr[1], \
                      ping_count='1', exp_count='1')
    if res:
        st.log("Ping succeeded.")
    else:
        st.warn("Ping failed.")

    conf_var = {
        'mode': 'enable',
        'active_connect_enable': '1',
        'local_as': '200',
        'remote_as': '100',
        'remote_ip_addr': data.ip4_addr[1]
    }
    route_var = {
        'mode': 'add',
        'num_routes': route_count,
        'prefix': '121.1.1.0',
        'as_path': 'as_seq:1'
    }
    ctrl_start = {'mode': 'start'}

    # Configuring the BGP router.
    bgp_rtr1 = tgapi.tg_bgp_config(tg=tg,
                                   handle=h1['handle'],
                                   conf_var=conf_var,
                                   route_var=route_var,
                                   ctrl_var=ctrl_start)

    st.log("BGP_HANDLE: " + str(bgp_rtr1))
    st.log(
        "waiting for 10 sec to get the BGP neighbor started before going for another TG operation"
    )
    st.wait(10)
    # Verified at neighbor.
    tr1 = tg.tg_traffic_config(port_handle=tg_handler["tg_ph_1"], mode='create', transmit_mode='single_burst',
                               pkts_per_burst=2000, \
                               length_mode='fixed', rate_pps=2000, l3_protocol='ipv4', mac_src=data.tg_mac1, \
                               mac_dst=dut_rt_int_mac1, ip_src_addr=data.ip4_addr[0],
                               ip_dst_addr=data.ip4_addr[9])
    st.log("TRAFCONF: " + str(tr1))
    res = tg.tg_traffic_control(action='run', stream_handle=tr1['stream_id'])
    st.log("TR_CTRL: " + str(res))
    tg.tg_traffic_control(action='stop', stream_handle=tr1['stream_id'])
    st.log("Checking the stats and verifying the traffic flow")
    traffic_details = {
        '1': {
            'tx_ports': [vars.T1D1P1],
            'tx_obj': [tg_handler["tg"]],
            'exp_ratio': [1],
            'rx_ports': [vars.T1D2P1],
            'rx_obj': [tg_handler["tg"]],
        }
    }
    #verify statistics
    aggrResult = tgapi.validate_tgen_traffic(traffic_details=traffic_details,
                                             mode='aggregate',
                                             comp_type='packet_count')
    if not aggrResult:
        return False

    return True
Beispiel #13
0
def vlan_variables():
    global tg
    global tg_handler
    sc_data.vlan_list = random_vlan_list(count=2)
    sc_data.vlan = str(sc_data.vlan_list[1])
    sc_data.vlan1 = str(sc_data.vlan_list[0])
    sc_data.source_mac = "00:0A:01:00:00:01"
    sc_data.line_rate = 100
    sc_data.wait_stream_run = 10
    sc_data.wait_for_stats = 10
    sc_data.frame_size = 68
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2", "T1D2P1",
                                          "T1D2P2")
    tg = tg_handler["tg"]
    tg_info['tg_info'] = tg_handler
    tg_info['vlan_id'] = sc_data.vlan
    sc_data.mac_count = 100
    sc_data.portchannel_name = "PortChannel7"
    sc_data.portchannel_name2 = "PortChannel8"
    sc_data.dut_list = [vars.D1, vars.D2]
    sc_data.members_dut1 = [vars.D1D2P1, vars.D1D2P2]
    sc_data.members_dut2 = [vars.D2D1P1, vars.D2D1P2]
    sc_data.members_dut1_p2 = [vars.D1D2P3, vars.D1D2P4]
    sc_data.members_dut2_p2 = [vars.D2D1P3, vars.D2D1P4]
    sc_data.vlan_pc_d1 = [{
        "dut": [vars.D1],
        "vlan_id":
        sc_data.vlan,
        "tagged": [sc_data.portchannel_name, sc_data.portchannel_name2]
    }]
    sc_data.vlan_pc_d2 = [{
        "dut": [vars.D2],
        "vlan_id":
        sc_data.vlan,
        "tagged": [sc_data.portchannel_name, sc_data.portchannel_name2]
    }]

    sc_data.vlan_data_d1 = [{
        "dut": [vars.D1],
        "vlan_id":
        sc_data.vlan,
        "tagged": [vars.D1T1P1, vars.D1T1P2, vars.D1D2P1, vars.D1D2P2]
    }]
    sc_data.vlan_data_d2 = [{
        "dut": [vars.D2],
        "vlan_id":
        sc_data.vlan,
        "tagged": [vars.D2T1P1, vars.D2T1P2, vars.D2D1P1, vars.D2D1P2]
    }]
    sc_data.vlan1_data_d1 = [{
        "dut": [vars.D1],
        "vlan_id":
        sc_data.vlan1,
        "tagged": [vars.D1T1P1, vars.D1T1P2, vars.D1D2P1, vars.D1D2P2]
    }]
    sc_data.vlan1_data_d2 = [{
        "dut": [vars.D2],
        "vlan_id":
        sc_data.vlan1,
        "tagged": [vars.D2T1P1, vars.D2T1P2, vars.D2D1P1, vars.D2D1P2]
    }]
def initialize_variables():
    global data
    global tg
    global tg_handler
    data = SpyTestDict()
    data.session_name = "Mirror_Ses"
    data.gre_type = "0x88ee"
    data.dscp = "50"
    data.ttl = "100"
    data.queue = "0"
    data.type = 'mirror'
    data.source_ip = '11.1.1.2'
    data.destination_ip = '15.1.1.2'
    data.mode_high = 'high'
    data.mode_low = 'low'
    data.polling_interval = '1'
    data.threshold_percentage_type = 'percentage'
    data.threshold_used_type = 'used'
    data.threshold_free_type = 'free'
    data.ipv4_route_family = "ipv4_route"
    data.ipv6_route_family = "ipv6_route"
    data.fdb_family = "fdb"
    data.ipv4_neighbor_family = "ipv4_neighbor"
    data.ipv6_neighbor_family = "ipv6_neighbor"
    data.acl_group_entry_family = 'acl_group_entry'
    data.acl_group_counter_family = 'acl_group_counter'
    data.ipv6_nexthop_family = 'ipv6_nexthop'
    data.ipv4_nexthop_family = 'ipv4_nexthop'
    data.acl_table_family = "acl_table"
    data.mode_high_percentage = 50
    data.mode_low_percentage = 20
    data.mode_high_used = 1000
    data.mode_low_used = 10
    data.mode_high_free = 1000
    data.mode_low_free = 10
    data.mtu = "9216"
    data.eth = st.get_free_ports(vars.D1)[0]
    data.property = "mtu"
    data.mtu_default = "9100"
    data.vlan = str(random_vlan_list()[0])
    data.kbps = 1000
    data.frame_size = 68
    data.rate_pps = 5000
    data.packets = (data.kbps * 1024) / (data.frame_size * 8)
    data.bum_deviation = int(0.10 * data.packets)
    data.lower_pkt_count = int(data.packets - data.bum_deviation)
    data.higher_pkt_count = int(data.packets + data.bum_deviation)
    data.wait_stream_run = 10
    data.wait_for_stats = 10
    data.session_name_port = "Mirror1"
    data.mirror_type = "span"
    data.mirror_interface = vars.D1T1P2
    data.source_interface = vars.D1T1P1
    data.direction_list = "rx"
    data.collector_name_1 = "collector_1"
    data.collector_name_2 = "collector_2"
    data.shell_sonic = "sonic"
    data.ip4_addr = ["192.168.4.4"]
    data.ip6_addr = ["2001::1"]
    data.non_default_udp_port = "4451"
    data.default_udp_port = "6343"
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2")
    tg = tg_handler["tg"]
    tg_info['tg_info'] = tg_handler
    data.hw_constants_DUT = st.get_datastore(vars.D1, "constants")
    data.version_data = basic_obj.show_version(vars.D1)